2013-05-24 7 views
19

पर फायरिंग नहीं है मेरे पास एक बहुत ही सरल jQuery अजाक्स कॉल (नीचे) है। अजाक्स कॉल निष्पादित करता है और मैं फ़ायरबग नेट पैनल में देख सकता हूं कि सर्वर 200 ओके लौटा और एक स्ट्रिंग "ठीक" लौटा दिया जैसा कि इसे करना चाहिए। हालांकि, किए गए और असफल कार्य आग नहीं करते हैं! अधिक निराश!jquery AJAX किया गया फ़ंक्शन

("पहले" और। "के बाद" अलर्ट आग DO)

सरलता के लिए (और डीबगिंग तकनीक के रूप में) मैं इस नीचे छीन लिया है यह सबसे नंगे कंकाल है, लेकिन अभी भी संचालकों सक्रिय नहीं होगा करने के लिए। मैं यहाँ क्या नहीं देख रहा हूँ?

$.ajax({ 
    type: "POST", 
    url : postUrl, 
    data: dataToPost 
}).done(function() { 
    alert("Success."); 
}).fail(function() { 
    alert("Sorry. Server unavailable. "); 
}); 

इसके अलावा, जैसा ajax अतुल्यकालिक है, अगर आश्चर्य नहीं है:

postUrl= "/mod/users/check_email/"; 
dataToPost= { email: "[email protected]" }; 

alert("before"); 
$.ajax 
({ 
    type: "POST", 
    url: postUrl, 
    data: dataToPost, 
    done: function() 
    { 
     alert("Success."); 
    }, 
    fail: function() 
    { 
     alert("Sorry. Server unavailable. "); 
    }, 
}); // end Ajax call 

alert("after"); 
+1

AJAX विधि नहीं हुई है और विफल विकल्प नहीं हैं। जो आप खोज रहे हैं वह सफलता और त्रुटि है। –

उत्तर

44

आप श्रृंखला को done() और fail() कार्यों की जरूरत है, वे विकल्प $.ajax में इस्तेमाल वस्तु का हिस्सा नहीं हैं "सफलता के बाद" अलर्ट "सफलता" चेतावनी से पहले आता है।

+0

बहुत बहुत धन्यवाद !! वह एक चैंप की तरह काम किया। मैं पुरानी सफलता और त्रुटि उदाहरणों से बदल रहा था और असफल रहा। – misterrobinson

+0

@ मिस्टरबिनसन - हाँ, यह एक कट्टर भ्रमित हो सकता है, लेकिन नई विधियां ऑब्जेक्ट का हिस्सा नहीं हैं, क्योंकि वे अधिक सार्वभौमिक हैं जिनका उपयोग किसी भी स्थगित/वादे पर किया जा सकता है, जैसे $ .ajax फ़ंक्शन देता है। – adeneo

13

success और error कॉलबैक का उपयोग इस तरह किया जा सकता है।

$.ajax({ 
    type: "POST", 
    url: postUrl, 
    data: dataToPost, 
}).done(function() { 
    alert("Success."); 
}).fail(function() { 
    alert("Sorry. Server unavailable. "); 
}); 

या:: done और fail के लिए, आप सब करने की ज़रूरत

$.ajax({ 
    type: "POST", 
    url: postUrl, 
    data: dataToPost, 
    success: function() { 
      //code here 
    } 
}); 
+0

बहुत बहुत धन्यवाद !! वह एक चैंप की तरह काम किया। मैं पुरानी सफलता और त्रुटि उदाहरणों से बदल रहा था और असफल रहा। – misterrobinson

5

इसके अलावा यू डेटाप्रकार की जरूरत है: 'json'। मैं इस समस्या को जहां मैं इसे 'स्ट्रिंग' पर सेट था और यह किया विधि आग नहीं करता

3

मैं इस तरह एक ही सेटअप:

$.ajax({ 
    type: "POST", 
    url : postUrl, 
    data: dataToPost 
}).done(function() { 
    alert("Success."); 
}) 

और एक ही समस्या में पड़ गए: किया समारोह आग नहीं होगी। हालांकि मैंने इसे एक ही सेट अप से पहले कई बार काम करने में कामयाब रहा है, लेकिन यह पता लगाने में मुझे कुछ समय लगा कि क्या हुआ। चारों ओर घूमने के बाद, मैंने पाया कि यह अजाक्स कॉल द्वारा लौटाए गए डेटा के प्रकार पर भी निर्भर करता है। मूल रूप से, मैंने कुछ HTML वापस करने के लिए AJAX कॉल कॉन्फ़िगर किया। किया गया काम काम नहीं किया। मैंने इसे वापस जेसन में बदल दिया (फ्लास्क में जेसनिफाइ के साथ), यह फिर से काम करता है।

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