2013-08-20 64 views
0

我目前在網站上與AJAX相關的問題掙扎着。
目標如下:
有一個「簡單」HTML頁面,其中包含一些鏈接和內容。
訪問裝載有AJAX的HTML頁面上的DOM元素

如果你點擊一個鏈接,我想打開一個包含鏈接(從href)包含在一個新div中的鏈接到該頁面的文件。來自頁面的內容當然會用AJAX加載到新的div中(覆蓋的一個)。

在這個新的覆蓋div我想添加一些JS代碼,一般已經工作。
無論如何,問題是每個AJAX加載的頁面中的DOM元素無法以適合使用的方式訪問,在我的具體情況下。 我得到了下面這段代碼至今:

$$('.add-exercise').addEvent('click', function(e) { 
     var request_exercise_add = new Request.HTML({ 
      'method' : 'post', 
      'url' : e.target.get('href'), 

      onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript) { 
      // i know i can access responseElements here.. 
      } 
     }); 

     request_exercise_add.send('s=true'); 

     return false; 
    }); 

我知道我可以訪問包括網站上responseElements內返回的元素,但邏輯以某種方式相當複雜,因此它應該是 可能中添加的JS動態加載頁面中的HTML代碼。 請注意,JS也不能添加到head部分,因爲它不知道在dom-ready事件之後加載的元素。

+0

是我的回答與您的問題有關嗎?我理解你了嗎? – Sergio

回答

1

你試過iframe嗎? 或您嘗試添加的網站沒有PPP cookie和AllowContentInIframe ..?

+0

感謝您的建議。我已經考慮過了,可能會試試,但我仍然對「基本」AJAX解決方案感興趣。 – Chris

0

如果您想在ajax請求中添加腳本,您需要evalScripts: true,並且應該刪除request選項周圍的引號。

$$('.add-exercise').addEvent('click', function (e) { 
    var request_exercise_add = new Request.HTML({ 
     method: 'post', 
     url: e.target.get('href'), 
     evalScripts: true, 
     onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) { 
      // i know i can access responseElements here.. 
     } 
    }); 
    request_exercise_add.send('s=true'); 
    return false; 
}); 

我不知道什麼是響應的內容,但你可能也想用Mootools的的.set()而不是innerHTML追加新要素(如果你不這樣做還)。也許值得去檢查Dimitar的回答here關於這一點。