javascript - $.ajax 抛出奇怪的 "Uncaught TypeError: Illegal invocation"

标签 javascript ajax jquery

我有一些 jQuery 代码抛出了一个非常奇怪的错误。谷歌浏览器调用错误 Uncaught TypeError: Illegal invocation 并说它被抛出在 jquery-1.4.4.min.js 第 144 行的 c.extend.param.e 中,但回溯到我的 $.ajax 调用,看起来像这样:

$.ajax({
   url: target,
   type: method,
   dataType: 'json',
   data: sendData,
   success: function(result) {
       if (result.redirect) {
           window.location = result.redirect;
       }
       else {
           for (var i in result) {
                if ($(i).size()) {
                    $(i).html(result.i);
                }
            }
        }
    }
});

关于 SO 的另一个问题看起来有点像这样将它归因于使用 $ 没有正确地将它包含在 jQuery 函数中,但我很确定这次不是我的错误,因为我'一直很小心。

最佳答案

问题在这里:

event.preventDefault();
var data = $.extend({
    referrer: window.location, <-- window.location is an object,
                                   should be window.location.href
    href: $(this).attr('href')
}, options.linkData);
loadPage(options.linkUrl, options.linkMethod, data);

改变这个使它工作,它为什么会坏?

<jQUery1.4.4 at line 6079>
s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value)

encodeURIComponent 不喜欢 window.location 对象,因为它只接受 strings

参见:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent

关于javascript - $.ajax 抛出奇怪的 "Uncaught TypeError: Illegal invocation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279492/

相关文章:

jquery - 打破每个字符的输入字符串分隔输入

javascript - 用 ; 分割字符串只要它不在之间 » «

javascript - 理解延迟执行链的语法

javascript - JavaScript 中 "SetInterval"的意外行为

javascript - .replace 不适用于 xmlhttp.responseText - Javascript

javascript - 可折叠菜单不会在窗口调整大小时保持关闭状态

javascript - 简单(?)jquery/javascript 变量的问题

c# - 如何从 mvc3 模型的序列化 json 中获取backbone.js 模型?

javascript - 如何为内存游戏的 if/else if/else 语句创建获胜条件

javascript - Jquery Ajax php - .one 函数无法正常工作