我发现了奇怪的错误(也许)。当我以散列的形式向$ .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
我在评论中看到数据应该存在。
答案 0 :(得分:1)
默认情况下,作为非String的数据传递的任何内容都会被处理并转换为查询字符串。所以,如果您使用POST跳过错误:
$.post({
url: "http://yourserver/ajax" ,
data: {param1: 'val1', param2:'val2'}
});
<{1>} $.ajaxSend
中settings.data
的值为'param1=val1¶m2=val2'
,您需要解析参数,例如GET。
如果您想避免解析网址或数据,只需在构建设置对象时添加数据副本。额外参数不应该导致任何问题。
var data = {param1: 'val1', param2:'val2'};
$.get({
url: "http://yourserver/ajax" ,
data: data,
dataCopy: data
});
然后,在$.ajaxSend
中,您可以检查settings.dataCopy
中的值。