jQuery $ .ajaxSend()settings.data为null

时间:2008-11-27 11:32:30

标签: jquery ajax

我发现了奇怪的错误(也许)。当我以散列的形式向$ .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 个答案:

答案 0 :(得分:1)

默认情况下,作为非String的数据传递的任何内容都会被处理并转换为查询字符串。所以,如果您使用POST跳过错误:

 $.post({
      url: "http://yourserver/ajax" ,
      data: {param1: 'val1', param2:'val2'}
 });
<{1>} $.ajaxSendsettings.data的值为'param1=val1&param2=val2',您需要解析参数,例如GET。

如果您想避免解析网址或数据,只需在构建设置对象时添加数据副本。额外参数不应该导致任何问题。

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

然后,在$.ajaxSend中,您可以检查settings.dataCopy中的值。