2008-09-16 14 views
5

इस कोड के साथ मैं जब सर्वर स्क्रिप्ट चल रही है एक एनिमेटेड GIF दिखा सकते हैं:jQuery में सर्वर स्क्रिप्ट की प्रगति को कैसे प्रदर्शित करें?

function calculateTotals() { 
    $('#results').load('getResults.php', null, showStatusFinished); 
    showLoadStatus(); 
} 

function showLoadStatus() { 
    $('#status').html(''); 
} 


function showStatusFinished() { 
    $('#status').html('Finished.'); 
} 

हालांकि, मैं कि अब तक कितने स्क्रिप्ट है, उदाहरण के लिए की स्थिति प्रदर्शित करना चाहते हैं "प्रसंस्करण लाइन 20000 के 342 ..." और इसे समाप्त होने तक इसे गिनती है।

मैं यह कैसे कर सकता हूं? मैं एक सर्वर-स्क्रिप्ट बना सकता हूं जिसमें लगातार अद्यतन जानकारी होती है लेकिन मैं इसे पढ़ने के लिए कहां कहां डालूं, कहूं, हर सेकेंड?

उत्तर

2

एंड्रयू के उत्तर में आपकी टिप्पणियां पढ़ने के बाद।

आप इस तरह स्थिति में लिखा होगा:

function getStatus() { 
    $.getJSON("/status.php",{"session":0, "requestID":12345}, 
    function(data) { //data is the returned JSON object from the server {name:"value"} 
      setStatus(data.status); 
      window.setTimeout("getStatus()",intervalInMS) 
    }); 
} 

इस प्रक्रिया में सर्वर पर कई समकालीन एक्सएचआर अनुरोध खोल सकते हैं का उपयोग करना।

सभी उत्पादन के लिए के रूप में अपने status.php है:

{"status":"We are done row 1040/45983459"} 

आप कर सकते हैं लेकिन उत्पादन के रूप में कई जानकारी आप जवाब में और तदनुसार कार्रवाई करने के लिए (उदाहरण के लिए एक प्रगति बार खिलाने या एक एनीमेशन प्रदर्शन करना चाहता हूँ। ।)

के लिए $ .getJSON में अधिक जानकारी देखने http://docs.jquery.com/Ajax/jQuery.getJSON

0

आपकी सर्वर-साइड स्क्रिप्ट किसी भी तरह सर्वर पर कहीं भी अपनी प्रगति को रखना चाहिए (फ़ाइल, डेटाबेस में क्षेत्र, memcached, आदि)।

आपके पास AJAX फ़ंक्शन वर्तमान प्रगति को लौटाना चाहिए। एक बार एक बार इस समारोह को मतदान करें और तदनुसार परिणाम प्रस्तुत करें।

0

यह जानने के बिना कि आपका सर्वर साइड कोड कैसे काम करता है, यह कहना मुश्किल है। हालांकि, प्रक्रिया के तीन चरण हैं। सबसे पहले आपको नौकरी निर्माण स्क्रिप्ट को कॉल करने की आवश्यकता है। यह एक आईडी नंबर देता है और सर्वर को काम करता है। इसके बाद, हर दूसरे या तो, आपको एक स्टेटस स्क्रिप्ट कॉल करने की आवश्यकता होती है जो एक स्टेटस संदेश देता है जिसे आप प्रदर्शित करना चाहते हैं। उस स्थिति स्क्रिप्ट को यह मानने के लिए भी एक मूल्य वापस करने की आवश्यकता है कि नौकरी समाप्त हो गई है या नहीं। जब स्टेटस स्क्रिप्ट कहती है कि नौकरी खत्म हो गई है तो आप मतदान बंद कर दें।

नौकरी की स्थिति जानने के लिए आपको यह स्थिति स्क्रिप्ट कैसे प्राप्त होती है यह सुनिश्चित करता है कि सर्वर कैसे स्थापित किया जाता है, लेकिन शायद नौकरी के दौरान विभिन्न बिंदुओं पर डेटाबेस तालिका में संदेश लिखना शामिल है। स्थिति स्क्रिप्ट तब डेटाबेस से इस संदेश को पढ़ता है।

+0

ठीक है, लेकिन मैं कहाँ लाइन जो स्थिति स्क्रिप्ट पढ़ता रख सकता हूं? यही वह है जो मुझे समझ में नहीं आता है। मैं इसे अपने showLoadStatus() फ़ंक्शन में नहीं कर सकता क्योंकि यह केवल एक बार निष्पादित होता है। –

1

मैं jQuery के लिए विनिर्देशों के साथ नीचे नहीं हूं, लेकिन एक सामान्य उत्तर जिसमें मतदान शामिल नहीं होता है: forever frame तकनीक का एक भिन्नता उपयोग करें। असल में, एक छिपी हुई आईफ्रेम बनाएं, और इसके बारे में src 'getresults.php' सेट करें। गेट्रेसल्ट्स के अंदर आप स्क्रिप्ट ब्लॉक को "स्ट्रीम" करते हैं, जो मूल दस्तावेज़ में एक जावास्क्रिप्ट फ़ंक्शन को कॉल करते हैं जो वास्तव में प्रगति को अद्यतन करता है। यहां an example है जो हमेशा के लिए फ्रेम के पीछे मूल विचार दिखाता है। (हालांकि, मैं अपने वास्तविक जेएस या एचटीएमएल का उपयोग करने की अनुशंसा नहीं करता हूं, यह उचित रूप से औसत है)

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