我有一些jQuery代码,这是一个非常奇怪的错误。谷歌浏览器调用错误Uncaught TypeError: Illegal invocation
并说它在jquery-1.4.4.min.js第144行的c.extend.param.e
中抛出,但将其回溯到我的$ .ajax调用,如下所示:< / p>
$.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函数中,但是我很确定这次不是我的错误,因为我一直很小心
答案 0 :(得分:19)
问题在于:
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
答案 1 :(得分:2)
尝试使用传统参数的jQuery.param