दिलचस्प पोस्ट
डेटाफ्रेम कॉलम के क्रम को कैसे बदला जाए? आईफोन पर वेब ऐप में पीएचपी सत्र बनाए रखें गिट: तेजी से उपेक्षा करने और मूल को पूर्व में वापस करने के लिए कैसे? कंसल्टेंट पर कोई कंस नहीं है, जिसमें कोई भाषा मानक नहीं है? WPF उपयोगकर्ता नियंत्रण अभिभावक गैर-बिल्टिन प्रकार के लिए कॉन्स्ट मान द्वारा फ़ंक्शन रिटर्न होने के लिए उपयोग के मामलों क्या हैं? डेटा कंटेंट्रेट XML सीरियलाइज़ेशन और एक्सएमएल गुण .NET कंसोल ऐप को कैसे चलाना है? नई ग्रेडल प्रोजेक्ट को आयात करने में असफल: टूल टूल्स संशोधन * .0.0 खोजने में विफल एंड्रॉइड कैमरा के NV21 प्रारूप से काले और सफेद छवि निकालें मैं NumPy में रिक्त अरै / मैट्रिक्स कैसे बनाऊं? एसक्यूएल स्टेटमेंट में स्क्वायर ब्रैकेट्स का क्या उपयोग है? JQuery में, 2 दशमलव स्थानों पर संख्या को स्वरूपित करने का सबसे अच्छा तरीका क्या है? रेल: फ़ील्ड_ सूचकांक के लिए? कोई ऑपरेटर "<<" इन ऑपरेटरों से मेल नहीं खाता

फोन समारोह से एक jquery AJAX कॉलबैक के लिए प्रतीक्षा करें

मैंने इस प्रकार के प्रश्नों के बहुत से उत्तर की समीक्षा की है और अब मैं सबसे अच्छा तरीका के रूप में उलझन में हूं। नवीनतम jquery को देखते हुए, मैं चाहता हूँ

  1. एजेक्स फंक्शन पर कॉल करें
  2. एजेक्स प्रोसेसिंग करें (सफलता या त्रुटि) // काम ठीक है
  3. सफलता या त्रुटि पर स्थिति को आगे की प्रक्रिया के लिए कॉलिंग फ़ंक्शन पर लौटा दें

कॉलिंग फ़ंक्शन (doAjax) में, मैं कॉलबैक के लिए कैसे प्रतीक्षा करता हूं, सफलता या त्रुटि के लिए प्रसंस्करण को पूरा करता हूं (इस मामले में इसकी सफलता से कोई फॉर्म स्पष्ट होता है, त्रुटि के रूप में इसे रखें)

किसी भी सलाह के लिए thx,

कला [संपादित करें] एक टाइपो था, जैसा कि आप लोग देख चुके हैं, कॉल करना चाहिए था। एएएनएजैक्स नहीं करते एजेक्स

$(function () { doAnAjax(Url, data, function (myRtn) { if (myRtn == "success") { resetForm($('#myForm')); resetForm($('form[name=addChlGrp]')); } else { $('.rtnMsg').html("Opps! Ajax Error"); } }); }); function doAnAjax(newUrl, data) { $.ajax({ url: newUrl, async: true, dataType: 'html', beforeSend: function () { $('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>"); }, type: "GET", data: data, cache: false, success: function (data, textStatus, xhr) { $('.rtnMsg').html(data); myRtnA = "Success" return myRtnA; }, error: function (xhr, textStatus, errorThrown) { $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown); myRtnA = "Error" return myRtnA; } }); } 

वेब के समाधान से एकत्रित समाधान "फोन समारोह से एक jquery AJAX कॉलबैक के लिए प्रतीक्षा करें"

आपको कॉलबैक फ़ंक्शन का उपयोग करना होगा। इसे नीचे आज़माएं:

 $(function() { // I think doAjax should doAnAjax() // here you're passing callback // but you're not using it doAnAjax() doAnAjax(Url, data, function(myRtn) { if (myRtnV == "success") { resetForm($('#myForm')); resetForm($('form[name=addChlGrp]')); } else { $('.rtnMsg').html("Opps! Ajax Error"); } }); }); // pass callback as third parameter to doAnAjax() function doAnAjax(newUrl, data, callBack) { $.ajax({ url: newUrl, async: true, dataType: 'html', beforeSend: function() { $('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>"); }, type: "GET", data: data, cache: false, success: function(data, textStatus, xhr) { $('.rtnMsg').html(data); myRtnA = "Success" return callBack( myRtnA ); // return callBack() with myRtna }, error: function(xhr, textStatus, errorThrown) { $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown); myRtnA = "Error" return callBack ( myRtnA ); // return callBack() with myRtna } }); 

जैसा कि पहले बताया गया है, कॉलबैक का इस्तेमाल करना

 function process(url, params, successCallback, errorCallback) { $.ajax({ success : successCallback, error : errorCallback, data : params, url : url, type : 'POST', dataType : 'json' }); } process( 'http://www.google.co.uk', { param1 : 'a' }, function(resp) { alert('Success'); }, function() { alert('Uh oh'); } ); 

आप तब process लिए किसी भी फ़ंक्शन पास कर सकते हैं और इसे सफलता / त्रुटि पर बुलाया जाएगा

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

यदि आपको कुछ तुल्यकालिक होने की आवश्यकता है तो आप अपने ध्वज को async:true से बदल सकते हैं async:true लिए async:true async:false लेकिन फिर यह वास्तव में एक SJAX कॉल हो सकता है (यह भी सुनिश्चित नहीं है कि शब्द मौजूद है, लेकिन तकनीकी रूप से यह एक AJAX कॉल नहीं है)।

Jquery में 'derferred' देखें नीचे दिए गए उदाहरण के साथ async बंद के साथ deferred.done का उपयोग करता है, और मेरे लिए काम करने लगता है।!

 $.ajax({ url: "http://www.whatever.com/whatever", async: false }).done(function( data ) { alert(data); //or whatever })