2015-09-04 91 views
0

我有一個問題,試圖通過添加參數來定義如何處理返回的結果來改進我的ajax函數的功能。解析涉及ajax的函數參數

所以我想實現的是一種方法來告訴函數將結果附加到給定元素的id。但我很難理解如何添加此功能。

這是我當前的代碼:

var ajax = new function(){ 

    var self = this; 

    self.x = function() { 
     if (typeof XMLHttpRequest !== 'undefined') { 
      return new XMLHttpRequest(); 
     } 
    }; 

    self.send = function(url, callback, method, data, sync) { 
     var x = self.x(); 
     x.open(method, url, sync); 
     x.onreadystatechange = function() { 
      if (x.readyState == 4) { 
       callback(x.responseText) 
      } 
     }; 
     if (method == 'POST') { 
      x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
     } 
     x.send(data) 
    }; 

    self.get = function(url, data, callback, sync) { 
     var query = []; 
     for (var key in data) { 
      query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])); 
     } 
     self.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, sync) 
    }; 
}; 

我然後做出一個Ajax請求就像這樣:

//get the html file, and then call a function 
ajax.get(dir.layout+'login.html',false, 
     function(){ 
      elements.addTemplate(data,'parent',true); 
     }); 

在Chrome瀏覽器中XHR顯示正確的數據和內容,所以我知道的那部分作品。在我elements.loadTemplate功能,我有這三條線與它們的實際值:

elements.addtemplate(data,div_id,append){  
     console.log(data); //shows: 
     console.log(div_id); //shows string: parent 
     console.log(append); //shows: true 
    } 

現在的問題是數據是空白的,當我希望它包含在這種情況下login.html,我只是請求的HTML文件的內容( )。我想知道爲什麼它會顯示爲空白,我如何解決它?

+0

FYI:我知道的jQuery的,但我想學習語言的香草以及如何它在我使用圖書館之前有效。 – Sir

+0

在你的代碼中,你期望'data'包含你請求的頁面的HTML。你已經證明'append'是真的,這很有趣,因爲在你的代碼中沒有叫'append'的變量。也許在你沒有顯示的代碼中存在一個主要問題 –

+0

@JaromandaX請參閱編輯以查看我的'elements.addtemplate'函數以瞭解var名稱的來源。 – Sir

回答

1

,因爲你的回調不接受參數

試試這個數據是不明確的:

ajax.get(dir.layout+'login.html',false, 
     function(data){ // <=== data 
      elements.addTemplate(data,'parent',true); 
     }); 
+0

仍然似乎是我的空白,而不是有登錄頁面的內容。 – Sir

+0

然後你需要看看你的ajax函數中有什麼x.responseText –

+0

是的,我檢查了它,它包含html文件的內容。 。 – Sir