2010-11-25 25 views
13

Gerçekten çok garip bir hata atıyor bazı jQuery kodu var. Google Chrome hatasını Uncaught TypeError: Illegal invocation çağırır ve jquery-1.4.4.min.js hattının 144 c.extend.param.e atılmış olduğunu söylüyor, ancak bu gibi görünüyor benim $ .ajax çağrı, bunu geriye dönük izleme:

$.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); 
       } 
      } 
     } 
    } 
}); 

Başka soru Bu biraz gibi görünüyor bu gibi bir jQuery işlevi düzgün bir şekilde kapatmadan $ kullanarak özellikleri, ama eminim ki bu sefer hatam değil, çünkü ben dikkatli oldum.

cevap

20

Sorunları buradadır:

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

, bu iş yapar kırılır nedeni değiştirme? sadece strings sürer

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

encodeURIComponent

window.location nesneyi sevmez.

Bkz:

+0

sayesinde geleneksel parametre ile jQuery.param ile deneyin, işte bu çözüldü. –

+4

Sorun değil :) Sadece 5 dakika sürdü (ne aramanız gerektiğini biliyorsanız biliyorsanız) –

+0

event.preventDefault(); var data = $ .extend ({ yönlendiren: - $ (bu) .attr ('href') window.location,