2012-12-22 22 views
7

पर एक टेक्स्ट फ़ाइल की सामग्री पढ़ें मैं एक संगीत साइट पर काम कर रहा हूं: मेरे पास सर्वर पर एक टेक्स्ट फ़ाइल है जिसमें वर्तमान में चल रहे गीत का नाम है। मैं प्रत्येक पंद्रह सेकंड में टेक्स्ट फ़ाइल पढ़ना चाहता हूं, और रीफ्रेश किए बिना पर प्रदर्शित टेक्स्ट को बदलना चाहता हूं।प्रत्येक 15 सेकंड

अब, थोड़ा jQuery और जावास्क्रिप्ट का उपयोग करके, मैं वास्तव में उस बिंदु पर पहुंच गया हूं जहां फ़ाइल को पढ़ा और पहली बार प्रदर्शित किया गया है, लेकिन यह रीफ्रेश नहीं होगा। मैंने सभी प्रकार के सेट अंतराल कार्यों का प्रयास किया है, लेकिन मेरे जीवन के लिए मैं इस भाग को काम करने के लिए नहीं मिल सकता। किसी भी मदद की सराहना की जाएगी।

यहाँ मैं क्या है:

<script type="text/javascript"> 
$(document).ready(function() { 
    jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) { 
     var myvar = data; 
     var parts = myvar.split(/\n/); 
     var songtitle = parts[0]; 
     var songartist = parts[1]; 
     var songalbum = parts[2]; 
     var songtime = parts[3]; 
     $('#songtitleholder').html(songtitle); 
     $('#songartistholder').html(songartist); 
     $('#songalbumholder').html(songalbum); 
    }); 
});​ 
</script> 
+0

एक तरफ नोट पर, आपको टेक्स्ट फ़ाइल – Horen

उत्तर

5

आप कोड आप में repeatedly पर अमल करना चाहते हैं रख सकते हैं फ़ंक्शन और पास जो setTimeout में कार्य करता है। सेटटाइमआउट का दूसरा पैरामीटर millisecond में अंतराल लेगा।

यहां सेटटाइमआउट का उपयोग करना आईएमओ अधिक appropriate है क्योंकि यह अनुरोध भेजने और प्रतिक्रिया प्राप्त करने के लिए किए गए समय को बाहर कर देगा। यह send request every 5 second after receiving response.

<script type="text/javascript"> 

$(document).ready(function() { 

    function functionToLoadFile(){ 
     jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) { 
     var myvar = data; 
     var parts = myvar.split(/\n/); 
     var songtitle = parts[0]; 
     var songartist = parts[1]; 
     var songalbum = parts[2]; 
     var songtime = parts[3]; 

     $('#songtitleholder').html(songtitle); 
     $('#songartistholder').html(songartist); 
     $('#songalbumholder').html(songalbum); 
     setTimeout(functionToLoadFile, 5000); 
    }); 
    } 

    setTimeout(functionToLoadFile, 10); 
}); 

</script> 
+0

की बजाय डेटाबेस में इस तरह की जानकारी सहेजने पर विचार करना चाहिए यह खूबसूरती से काम करता है! धन्यवाद। जैसे ही कोई पृष्ठ पर उतरेगा, लक्ष्य टेक्स्ट फ़ाइल को पढ़ने का कोई तरीका है, इसे प्रदर्शित करें, फिर रीफ्रेश करें? जैसा कि यह अभी खड़ा है, गीत शीर्षक लेबल कुछ सेकंड के लिए खाली बैठता है (जिसे मैं पूरी तरह से साथ रह सकता हूं)। आपके त्वरित जवाब के लिए धन्यवाद! –

+0

मैंने अपना जवाब अपडेट कर दिया है, जैसे ही पृष्ठ लोड हो जाएगा और 5 सेकेंड के बाद पुनः लोड हो जाएगा। यहां आईटीओ सेटटाइमआउट का उपयोग करना अधिक उपयुक्त है क्योंकि यह अनुरोध भेजने और प्रतिक्रिया प्राप्त करने के लिए समय निकाल देगा। प्रतिक्रिया प्राप्त करने के बाद यह हर 5 सेकंड में अनुरोध भेज देगा। – Adil

+0

यह मेरे लिए पूरी तरह से काम किया। धन्यवाद। यह जगह कमाल है! मैंने सोचा कि छुट्टियों के बाद तक मैं बंदूक रहूंगा! –

3

आप इस प्रकार का setInterval कॉल में अपने उदाहरण रैप करने के लिए सक्षम होना चाहिए:

$(document).ready(function() { 
    setInterval(function(){ 
    jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) { 
     var myvar = data; 
     var parts = myvar.split(/\n/); 
     var songtitle = parts[0]; 
     var songartist = parts[1]; 
     var songalbum = parts[2]; 
     var songtime = parts[3]; 
     $('#songtitleholder').html(songtitle); 
     $('#songartistholder').html(songartist); 
     $('#songalbumholder').html(songalbum); 
    }); 
    }, 15000); 
});​ 
3

एक समारोह बनाएँ और setInterval से कॉल करने की इस कोशिश नहीं क्यों

$(document).ready(function() { 
    function refresh(){ 
     jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', { "t": $.now() }, function(data) { 
      var myvar = data, 
       parts = myvar.split(/\n/), 
       songtitle = parts[0], 
       songartist = parts[1], 
       songalbum = parts[2], 
       songtime = parts[3]; 

      $('#songtitleholder').html(songtitle); 
      $('#songartistholder').html(songartist); 
      $('#songalbumholder').html(songalbum); 
     }); 
    } 
    setInterval(refresh, 15000); 
});​ 
0

(आप इतना है कि परिणाम कैश नहीं है यूआरएल के लिए एक टाइमस्टैम्प जोड़ सकते हैं) ?

window.setInterval(function(){ 

    /// call your function here 

    }, 15000); 
0

और का जवाब प्रति हर किसी के रूप में setInterval उपयोग करते समय, फ़ाइल का अनुरोध द्वारा कैश नहीं किया जा रहा है के अलावा:

jQuery.get("http://......./NowPlaying.txt?t="+new Date().getTime(), function....); 
+0

jQuery स्वचालित रूप से url – charlietfl

+0

पर एक टाइमस्टैम्प जोड़ देगा आपके उत्तर के लिए बहुत बहुत धन्यवाद! –

+0

@charlietfl, ऐसा नहीं होगा .. 'cache' विकल्प के लिए डिफ़ॉल्ट 'स्क्रिप्ट' और 'jsonp' को छोड़कर सत्य है। Http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings –

1

समाधान setTimeout का उपयोग कर। setInterval ब्राउज़र टैब स्विच करते समय विंडो खोने पर पंक्तिबद्ध हो जाती है।

$(document).ready(function() { 
    getData(); 
});​ 

function getData() { 
    setTimeout(function() { 
     jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) { 
      var myvar = data; 
      var parts = myvar.split(/\n/); 
      var songtitle = parts[0]; 
      var songartist = parts[1]; 
      var songalbum = parts[2]; 
      var songtime = parts[3]; 
      $('#songtitleholder').html(songtitle); 
      $('#songartistholder').html(songartist); 
      $('#songalbumholder').html(songalbum); 

      /* repeat getData*/ 
      getData(); 
     }); 
    }, 15000) 

} 
+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद! –

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