2012-08-03 26 views
5

Próbuję zaimportować niektóre pliki javascript z niektórych hostów kodu.

$.when(
     $.getScript('http://pingzi.googlecode.com/svn-history/r30/branches/wangqi/web/jquery.window.min.js'), 
     $.getScript('http://mottie.github.com/tablesorter/js/jquery.tablesorter.js'), 
     $.getScript('http://tconnell.com/samples/scroller/lib/jquery.tablesorter.scroller.js'), 
     $.getScript('http://code.highcharts.com/stock/highstock.js'), 
     $.Deferred(
      function(deferred) { 
       $(deferred.resolve); 
      } 
     ) 
    ).done(function() { 
     // my function goes here.... 
    }); 

Kiedy staram się nazywają te adresy URL, aby importować pliki js, adresy URL dołączy ?_=1344036242417 a potem nie mógł rzeczywiście dostać się do pliku skryptu chcę.

tj "NetworkError: 404 Not Found - http://pingzi.googlecode.com/svn-history/r30/branches/wangqi/web/jquery.window.min.js?_=1344036242417"

ktoś ma pomysły jak ominąć ten problem? Z góry dziękuję.

+0

Co za wspaniały kawałek kodu. +1! – adeneo

Odpowiedz

7

To dlatego, buforowanie w Ajax jest domyślnie wyłączona w jQuery, aby ją włączyć i zdjąć querystring zrobić:

$.ajaxSetup({ 
    cache: true 
}); 

ale że może również wpływać wywołuje inny ajax, że nie chcą pamięci podręcznej, jest dużo więcej na ten temat w docs for getScript, a tam nawet trochę how-to na tworzeniu pamięci podręcznej getScr Funkcja ipt o nazwie cachedScript.

Można także włączyć buforowanie w $ .getScript przez redefinicji funkcji z nowej opcji, aby włączyć cache on/off przekazując prawda czy fałsz:

$.getScript = function(url, callback, cache){ 
    $.ajax({ 
      type: "GET", 
      url: url, 
      success: callback, 
      dataType: "script", 
      cache: cache 
    }); 
}; 
+0

A teraz dostaję przewagę? – adeneo

+0

Dziękuję bardzo. Głosowałem za tobą. – sozhen

2

Dołączony ciąg zapytania ma na celu zapobieganie buforowaniu. Można to wyłączyć przez enabling caching:

$.ajaxSetup({ 
    cache: true 
}); 
+0

Zignoruj ​​błąd składni przez chwilę; Wyraźnie kod OP działa w pewnym stopniu ponad to, biorąc pod uwagę błąd 404. –

+1

Wow, naprawdę? 1. Napisz błędną odpowiedź 2. Uzyskaj poprawkę 3. Usuń odpowiedź 4. Prawidłowa odpowiedź na tę samą treść, co pozostałe dwie odpowiedzi 5.Odzyskaj i czerp swoją reputację. '* westchnienie *' –

+0

@MattBall przepraszam ... nie zamierzone w ogóle. Nie patrzyłem na inne odpowiedzi, chciałem tylko poprawić moje. – McGarnagle

4

jQuery jest automatycznie dodawania _=1344036242417, który łamie URL. Uwaga:

Aby zapobiec jQuery od dodając, że parametr: Ajax get request with useless parameter. Aby podsumować tę odpowiedź, przed wywołaniem $.ajaxSetup należy ustawić .

Be [sic] domyślna $.getScript() ustawia ustawienia cache do false. To dodaje parametr zapytania o znaczniku czasu do adresu URL żądania, aby zapewnić, że przeglądarka pobierze skrypt za każdym razem, gdy będzie żądany. Można zastąpić tę funkcję przez ustawienie właściwości cache globalnie za pomocą $.ajaxSetup():

$.ajaxSetup({ 
    cache: true 
}); 
Powiązane problemy