2011-04-16 21 views
29

मैं एक mysql प्रतिक्रिया डेटाबेस इस तरह का निर्माण किया है कॉल ajax:jQuery हर 10 सेकंड

नाम | स्थान | फीडबैक

रयान | इंग्लैंड | महान समर्थन

स्पष्ट रूप से उससे अधिक प्रविष्टियां हैं। मैं एक प्रतिक्रिया div बनाने की कोशिश कर रहा हूं, जहां यह AJAX के माध्यम से हर 10 सेकंड में एक नया फीडबैक आइटम प्रदर्शित करता है।

तो मैं इस का निर्माण किया है:

$(document).ready(function(){ 
    new get_fb(); 
}); 

function get_fb(){ 
var feedback = $.ajax({//Ajax 
         type: "POST", 
         url: "feedback.php", 
         async: false 
         }).responseText;//end of ajax 

$('div.feedback-box').html(feedback).delay(10000).queue(function() { 
    new get_fb(); 
    }); 
} 

और यहाँ मेरी PHP फ़ाइल है:

$result = mysql_query("SELECT * FROM feedback ORDER BY RAND() LIMIT 0,1"); 
while($row = mysql_fetch_array($result)) 
{ 
    $name = $row['name']; 
    $location = $row['location']; 
    $feedback = $row['feedback']; 

    echo " 
    <p>Name: $name, Location: $location, Feedback: $feedback.</p> 
    "; 
} 

बहरहाल, यह केवल दो को दर्शाता है। यह नए लोगों को नहीं दिखाता है, यह पूरी तरह से पहले दूसरे को दिखाता है और बंद हो जाता है।

मैं क्या गलत कर रहा हूं? धन्यवाद :)

उत्तर

48

आप एक setInterval() क्या करना चाहते करने के लिए जा रहे हैं?

setInterval(function(){get_fb();}, 10000); 

या:

setInterval(get_fb, 10000); 

या, यदि आप यह केवल सफलतापूर्वक के बाद कॉल को पूरा करने को चलाना चाहते हैं, आप इसे अपने .ajax().success() कॉलबैक में स्थापित कर सकते हैं:

function get_fb(){ 
    var feedback = $.ajax({ 
     type: "POST", 
     url: "feedback.php", 
     async: false 
    }).success(function(){ 
     setTimeout(function(){get_fb();}, 10000); 
    }).responseText; 

    $('div.feedback-box').html(feedback); 
} 

या उपयोग .ajax().complete() यदि आप परिणाम के बावजूद इसे चलाने के लिए चाहते हैं:

function get_fb(){ 
    var feedback = $.ajax({ 
     type: "POST", 
     url: "feedback.php", 
     async: false 
    }).complete(function(){ 
     setTimeout(function(){get_fb();}, 10000); 
    }).responseText; 

    $('div.feedback-box').html(feedback); 
} 

यहां दोनों का प्रदर्शन है। ध्यान दें, सफलता केवल एक बार काम करती है क्योंकि jsfiddle AJAX कॉल पर 404 त्रुटि लौटा रहा है।

http://jsfiddle.net/YXMPn/

+1

मैंने देखा मैं '.responseText' कोड है, जो कार्यक्षमता भंग हो जाए के भाग का सफाया कर दिया था। मेरा अंतिम संपादन देखें। –

+1

यह बढ़िया है! आपकी सहायता के लिए धन्यवाद! मैंने आपका उदाहरण इस्तेमाल किया (.ajax()। पूर्ण()) धन्यवाद :) – ryryan

+1

कोई समस्या नहीं। खुशी हुई यह मदद की। :) –

3

आप setInterval (कोशिश कर सकते) के बजाय:

var i = setInterval(function(){ 
    //Call ajax here 
},10000) 
10
setInterval(function() 
{ 
    $.ajax({ 
     type:"post", 
     url:"myurl.html", 
     datatype:"html", 
     success:function(data) 
     { 
      //do something with response data 
     } 
    }); 
}, 10000);//time in milliseconds 
+0

@ मुहम्मद - आपके पास यूआरएल संपत्ति पर एक गलत हस्ताक्षर किया गया है। –

+0

@Maerlyn - मुझे भूल है कि हम जवाब संपादित कर सकते हैं। –

+0

@ जेरेड उल्लेख करने के लिए धन्यवाद और @Maerlyn –

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