2012-08-03 7 views
5

द्वारा स्क्रिप्ट फ़ाइल कैसे प्राप्त करें मैं कुछ कोड होस्ट से कुछ जावास्क्रिप्ट फ़ाइलों को आयात करने का प्रयास कर रहा हूं।

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

जब मैं जे एस फ़ाइलें आयात करने के लिए इन यूआरएल कॉल करने के लिए प्रयास करते हैं, यूआरएल ?_=1344036242417 जोड़ देंगे, और फिर मैं वास्तव में स्क्रिप्ट फ़ाइल मैं चाहता हूँ के लिए नहीं मिल सकता है।

अर्थात "NetworkError: 404 Not Found - http://pingzi.googlecode.com/svn-history/r30/branches/wangqi/web/jquery.window.min.js?_=1344036242417"

किसी भी एक विचारों कैसे इस समस्या को बायपास करने के लिए है? पहले ही, आपका बहुत धन्यवाद।

+0

क्या कोड का एक बड़ा टुकड़ा। +1! – adeneo

उत्तर

7

क्योंकि ajax में कैशिंग उसे चालू करें और दूर करने के लिए jQuery में डिफ़ॉल्ट रूप से बंद कर दिया है, यही कारण है कि है क्वेरी स्ट्रिंग कार्य करें:

$.ajaxSetup({ 
    cache: true 
}); 

लेकिन यह भी अन्य ajax कॉल है कि आप कैश नहीं करना चाहती प्रभावित हो सकता है, वहाँ docs for getScript में एक बहुत इस बारे में अधिक है, और यहां तक ​​कि एक छोटे से कैसे एक कैश्ड getScr बनाने पर ipt फ़ंक्शन कैश्डस्क्रिप्ट कहा जाता है।

तुम भी सही या गलत पारित करके/बंद कैश चालू करने के लिए एक नया विकल्प के साथ समारोह को पुनर्परिभाषित द्वारा $ .getScript में कैशिंग को सक्षम कर सकते हैं:

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

और अब मैं डाउनवॉटेड हो रहा हूं? – adeneo

+0

बहुत बहुत धन्यवाद। मैंने तुम्हें वोट दिया। – sozhen

2

संलग्न क्वेरी स्ट्रिंग कैशिंग को रोकने के लिए है। आप enabling caching करके इसे अक्षम कर सकते हैं:

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

एक पल के लिए वाक्यविन्यास त्रुटि को अनदेखा करें; स्पष्ट रूप से ओपी का कोड कुछ डिग्री के लिए काम करता है जो 404 त्रुटि देता है। –

+1

वाह, वास्तव में? 1. गलत जवाब पोस्ट करें 2. सही हो जाएं 3. उत्तर हटाएं 4. अन्य दो उत्तरों के समान सामग्री रखने के लिए सही उत्तर 5।अनदेखा करें और प्रतिष्ठा काट लें। '* श्वास *' –

+0

@ मैटबॉल क्षमा करें ... बिल्कुल जानबूझकर नहीं। मैं अन्य उत्तरों को नहीं देख रहा था, बस मेरा सही करना चाहता था। – McGarnagle

4

jQuery स्वचालित रूप से _=1344036242417, जो यूआरएल टूट जाता है जोड़ रहा है। नोट: Ajax get request with useless parameter:

कि पैरामीटर जोड़ने से jQuery को रोकने के लिए। उस उत्तर को सारांशित करने के लिए, cache: true सेट करने के लिए $.getScript() पर कॉल करने से पहले $.ajaxSetup का उपयोग करें।

[इस प्रकार से] डिफ़ॉल्ट, $.getScript()false करने के लिए कैश सेटिंग सेट करें। यह अनुरोध URL पर एक टाइमस्टैम्प क्वेरी पैरामीटर जोड़ता है ताकि यह सुनिश्चित किया जा सके कि ब्राउज़र प्रत्येक बार अनुरोध किए जाने पर स्क्रिप्ट डाउनलोड करता है। आप कैश संपत्ति विश्व स्तर पर $.ajaxSetup() का उपयोग कर की स्थापना करके इस सुविधा ओवरराइड कर सकते हैं:

$.ajaxSetup({ 
    cache: true 
}); 
5

jQuery ऐसी क्वेरी के लिए एक स्वचालित कैशिंग तंत्र है। आप नहीं चाहते हैं अतिरिक्त परम निम्नलिखित सेटअप उपयोग जोड़े जाने के लिए:

$.ajaxSetup({ 
    cache: true 
}); 

स्रोत: http://api.jquery.com/jQuery.getScript/#caching-requests

+0

बहुत बहुत धन्यवाद। – sozhen

संबंधित मुद्दे