$.ajax бросает странный "Неприем TypeError: Незаконный вызов"

У меня есть код jQuery, который бросает действительно странную ошибку. Google Chrome вызывает ошибку Uncaught TypeError: Illegal invocation и говорит, что она выбрана в строке c.extend.param.e строки jquery-1.4.4.min.js 144, но возвращает ее в мой вызов $.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, но я уверен, что на этот раз не моя ошибка, потому что я был осторожен.

Ответ 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);

Изменение этого заставляет его работать, причина его разрыва?

<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