जावास्क्रिप्ट सिंक AJAX कॉल मुद्दा

मैं AJAX कॉल से एचटीएमएल के नामों की सूची लाने की कोशिश कर रहा हूं और फिर प्रत्येक एचटीएमएल के लिए एक और AJAX कॉल के लिए और फिर मैं हैंडलबार का उपयोग करके इसे जोड़ने की कोशिश कर रहा हूं। लेकिन यह नीचे कोड के साथ नहीं हो रहा है। क्या कोई इसे डीबग करने में मेरी सहायता कर सकता है:

$.getJSON('api/filterTemplate/' + pageName.page, function (data) {
    var promises = [];
    $.each(data, function (i, rec) {
        promises.push($.get('commonCore/templates/' + rec.templateHtml));
    });
    $.when.apply(this, promises).then(function() { //after all requests complete
        $.each(arguments, function(i, html) {
            var filterTemplate = Handlebars.compile(html);
            replaceFilterTemplate(filterTemplate,data[i].classids);// this functions appends html to div -data[i].classids
        })
    })
});

प्रत्येक एचटीएमएल प्राप्त करने के बाद इसे जोड़ा जाना चाहिए और फिर अगली कॉल होनी चाहिए

0

1 उत्तर

$.get returns the jqXHR Object. That's what you're actually adding to your promises array.

आपको synchrone कॉल का उपयोग करना चाहिए, या सभी fetches async को संभालने के लिए अपने कोड को दोबारा सुधारना चाहिए और फिर वादे के माध्यम से आगे बढ़ना चाहिए।

सिंचन विकल्प:

$.each(data, function (i, rec) {
    $.ajax({
        url: 'commonCore/templates/' + rec.templateHtml, 
        async: false,
        success: function(result) {
             promises.push(result);
        }
    });
});
0
जोड़ा
@ सैमी मुझे इसके लिए स्ट्रिंग का उपयोग करना चाहिए
जोड़ा लेखक sameer saurav, स्रोत
कोई भाग्य महोदय ... अभी भी वही त्रुटि। मदद के लिए धन्यवाद
जोड़ा लेखक sameer saurav, स्रोत
आप toString का उपयोग कहां करेंगे? क्या आपने नमूना कोड आज़माया था?
जोड़ा लेखक Samuel, स्रोत