2010-02-16 14 views
6

मैं निम्नलिखित कोड, घटना लॉग इन करने जब कोई उपयोगकर्ता एक चैट विंडो बंद कर देता है इरादा:मैं एक अनलोड ईवेंट हैंडलर से AJAX अनुरोध को आग लगाने के लिए jQuery का उपयोग क्यों नहीं कर सकता?

$(window).unload(function() { 
    test(); 
}); 

function test() 
{ 
    alert("Hi"); 
    $.ajax({ 
     type: "POST", 
     url: baseUrl + 'Index/test', 
     data: "user_id=" + "Nisanth" + "& chat_id=" + 2, 
     success: function(msg){ 
     alert(msg); 
     } 
    }); 
    alert('Success'); 
} 

दोनों "हाय" और "सफलता" संदेशों चेतावनी ठीक लेकिन चेतावनी में AJAX कॉलबैक नहीं है ... ऑपरेशन जो मैं AJAX अनुरोध के माध्यम से ट्रिगर करना चाहता हूं वह भी नहीं हो रहा है (मैं एक चैट एप्लिकेशन विकसित कर रहा हूं, और जब उपयोगकर्ता विंडो बंद करता है तो डेटाबेस में एक प्रविष्टि लॉग करने का इरादा रखता है)।

उत्तर

15

क्योंकि AJAX असीमित है, प्रतिक्रिया ठीक से भेजी जाने से पहले पृष्ठ अनलोड हो रहा है, कनेक्शन को प्रभावी ढंग से समाप्त कर रहा है। async:false; सेट करने का प्रयास करें, हालांकि प्रतिक्रिया प्राप्त होने तक पृष्ठ को अनलोड करने में देरी होगी, यदि आपका सर्वर धीमा चल रहा है तो उपयोगकर्ता अनुभव के लिए यह बहुत अच्छा नहीं है।

$(window).unload(function() { 
    test(); 
}); 
function test() 
{ 
    alert("Hi"); 
    $.ajax({ 
    async: false, 
    type: "POST", 
    url: baseUrl + 'Index/test', 
    data: "user_id=" + "Nisanth" + "& chat_id=" + 2, 
    success: function(msg){ 
      alert(msg); 
     } 
    }); 
    alert('Success'); 
} 
+2

+1 * बहुत * जानना अच्छा है। –

+0

@ पेक्का: धन्यवाद :-) –

+0

बहुत बहुत धन्यवाद एंडी ई .. मेरी समस्या हल हो गई है :) –

-4

समस्या आपके डेटा का प्रारूप है। इसे एक क्वेरी स्ट्रिंग में परिवर्तित किया जाता है, यह कुंजी/वैल्यू जोड़े कुछ होना चाहिए: "user_id: value"

+1

नहीं। यह सिर्फ एक क्वेरीस्ट्रिंग * हो सकता है। देखें: http://api.jquery.com/jQuery.ajax/ – Shog9

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