2008-11-27 51 views
1

我發現了奇怪的錯誤(也許)。當我以散列形式向$ .ajax發送參數,並試圖檢查$ .ajaxSend中的參數時,我發現settings.data爲null,settings.url在包含參數的情況下是正常的。然後我查看jQuery代碼,發現數據被刪除。

// If data is available, append data to url for get requests 
    if (s.data && type == "GET") { 
     s.url += (s.url.match(/\?/) ? "&" : "?") + s.data; 

     // IE likes to send both get and post data, prevent this 
     s.data = null; 
    } 

現在我需要解析URL((的,怎麼辦?

In JQuery, using ajaxSend to preview the url built by $.post call

這裏的意見,我看到的數據應該在那裏。

回答

1

過去了默認情況下任何東西因爲不是字符串的數據會被處理並轉換爲查詢字符串。因此,如果您使用POST來跳過該錯誤:

$.post({ 
     url: "http://yourserver/ajax" , 
     data: {param1: 'val1', param2:'val2'} 
}); 

in $.ajaxSendsettings.data的值將爲'param1=val1&param2=val2',您將需要解析參數,如使用GET。

如果您想避免解析url或數據,只需在構建設置對象時添加數據的副本即可。額外的參數不應該導致任何問題。

var data = {param1: 'val1', param2:'val2'}; 
$.get({ 
     url: "http://yourserver/ajax" , 
     data: data, 
     dataCopy: data 
}); 

然後,在$.ajaxSend您可以在settings.dataCopy檢查數值。