जो मैं करने की कोशिश कर रहा हूं वह एक लोडिंग छवि को एक div में जोड़ना है (इसलिए उपयोगकर्ता जानता है कि कुछ लोड हो रहा है) और फिर मैं एक jquery AJAX फ़ंक्शन को कॉल करता हूं, जो "async: false" पर सेट है।अजाक्स (सिंक्रोनस) के दौरान ब्राउज़र लॉकिंग रोकें?
$jQuery("#playersListDiv").html(loadingImage);
$jQuery.ajax({
type: "POST", /* this goesn't work with GET */
url: urlValue, /*ex: "NBAgetGamesList.php" */
data: parameters, /*ex: "param1=hello" */
cache: false,
async: false,
success: function(data){
}
});
समस्या यह है कि ब्राउज़र ताले और बाद ajax कॉल किया जाता है जो निश्चित रूप से बेकार है जब तक लोड हो रहा है छवि संलग्न नहीं करता है: यहाँ मेरी कोड है। फ़ायरफ़ॉक्स एकमात्र ब्राउज़र है जो वास्तव में लोडिंग छवि को जोड़ता है। आईई, क्रोम, और सफारी लोडिंग छवि को संलग्न नहीं करते हैं।
मुझे पता है कि ब्राउजर लॉकिंग होता है क्योंकि एसिंक झूठी पर सेट है लेकिन यह मेरा एकमात्र विकल्प है क्योंकि मुझे जारी रखने से पहले इस अनुरोध को पूरा करने की प्रतीक्षा करनी है क्योंकि मुझे वापस आने वाले डेटा की आवश्यकता है।
क्या इसके आसपास कोई रास्ता है? अगर मैं लोडिंग छवि को जोड़ता हूं तो मैं एक चेतावनी देता हूं जो काम करता है लेकिन मैं नहीं चाहता कि हर बार एक चेतावनी पॉप-अप हो।
परिभाषा के अनुसार सिंक्रोनस, "अवरुद्ध" है। यह ब्राउज़र को कैसे प्रभावित करेगा अलग-अलग होता है लेकिन आम तौर पर डोम अपडेट और इंटरैक्शन को अवरुद्ध करता है। समस्या को "ठीक करने" के लिए इसे अतुल्यकालिक बनाएं। –
क्यों न केवल इसे अतुल्यकालिक बनाएं और इसके बाद कोड को एक अलग फ़ंक्शन में चलाने के लिए रखें। फिर रिटर्न कोड में फ़ंक्शन को कॉल करें? – Bob
"क्योंकि मुझे लौटाए गए डेटा की आवश्यकता है।" यही कॉलबैक के लिए है। आपका कोड रैखिक होना आवश्यक नहीं है। – epascarello