奇妙な「Uncaught TypeError:Illegal invocation」を投げる$ .ajax

ajax javascript jquery
奇妙な「Uncaught TypeError:Illegal invocation」を投げる$ .ajax

本当に奇妙なエラーを投げているjQueryコードがあります。 Google Chromeは「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に関するもう1つの質問は、jQuery関数で適切に囲まずに `$`を使用することに起因しますが、今回はエラーではないことを確信しています。

  14  1


ベストアンサー

問題はここにあります:

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);

これを変更すると機能しますが、壊れる理由は?

s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value)

encodeURIComponent`は、 strings`のみを受け取るため、 `window.location`オブジェクトを好みません。

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

19


trueの従来のパラメーターでjQuery.paramを試してください

2


タイトルとURLをコピーしました