2012-03-22 15 views
6

मैं सर्वर से डेटा पुनर्प्राप्त करने के बाद, एक jQuery सफलता फ़ंक्शन से यूआरएल प्राप्त करना चाहता हूं। दुर्भाग्य से, तीन मापदंडों सफलता समारोह लेता मूल यूआरएल के संपर्क में न:jQuery: सफलता समारोह में यूआरएल प्राप्त करें

success: function(data, statusText, jqhxr)

मैं jqhxr चर फेंक दिया, और वहाँ में यूआरएल नहीं पा सके। मुझे यूआरएल की आवश्यकता है क्योंकि मैं एक बार लूप के माध्यम से कई कॉल कर रहा हूं, और इसलिए मुझे नहीं पता कि अजाक्स कॉल वापस आ रहा है। इसे एक असीमित कॉल करना या तो मदद नहीं करता था।

अग्रिम धन्यवाद!

+1

मुझे लगता है कि आप यहां गलत मार्ग पर जा रहे हैं (1 फ़ंक्शन जो सभी AJAX रिटर्न को संभालता है) लेकिन क्या आप सर्वर से वापस जेएसओएन में पृष्ठ का नाम शामिल नहीं कर सकते? – AndrewR

+1

क्या आप "यह" वैरिएबल डंप कर सकते हैं? Console.log (यह) के लिए – FreeCandies

+0

+1; टिप्पणी – Relic

उत्तर

14

this.url सफलता के अंदर क्योंकि this समारोह की वर्तमान संदर्भ को संदर्भित करता समारोह काम करेंगे, और सफलता के समारोह के बाद से सेटिंग ऑब्जेक्ट का हिस्सा है जिसे आप .ajax() पर जा रहे हैं, यह यूआरएल प्रॉपर्टी तक पहुंच जाएगा।

js scope और .ajax() का वर्णन करने वाला आलेख देखें।

1

क्या आपका मतलब है कि इसे एक सिंक्रोनस कॉल करने में मदद नहीं मिली ...?

और मेरा सुझाव उस डेटा में पैरामीटर सेट करना होगा जो आप वापस प्राप्त कर रहे हैं यह निर्धारित करने के लिए कि क्या करना है, अगर आप AJAX कॉल के गुच्छा से लूप कर रहे हैं। लेकिन वास्तव में आपको एक से अधिक कॉल के माध्यम से लूप करना होगा यदि आप इसे सही तरीके से कर रहे हैं तो आपको डेटा के साथ पर्याप्त पैरामीटर भेजने में सक्षम होना चाहिए ताकि इसे एक कॉल में वापस लाया जा सके, इससे क्लाइंट और सर्वर के बीच संख्या यात्रा कम हो जाती है, सर्वर और डेटाबेस, फिर सर्वर पर सर्वर वापस।

1

आप AJAX कॉल करते समय शायद संदर्भ का उपयोग कर सकते हैं।

$.ajax({ 
    url: "test1.html", 
    context: $("#call1") 
}); 

$.ajax({ 
    url: "test2.html", 
    context: $("#call2") 
}); 

<div id="call1" class="hidden" data-url="whatever1"></div> 
<div id="call2" class="hidden" data-url="whatever2"></div> 

तो

success: function(data, statusText, jqhxr) { 
    var url = $(this).data("url"); 
} 

इस तरह आप किसी भी डेटा, न सिर्फ यूआरएल मिल सकता है। किसी भी डेटा को आप संबंधित div तत्व में एक्सेस करना चाहते हैं।

1

यदि आप jQuery .ajax() या .post() या .get() के माध्यम से सर्वर स्क्रिप्ट को कॉल करते हैं, तो आपके पास सफलतापूर्वक कॉलबैक फ़ंक्शन में यूआरएल उपलब्ध होना चाहिए, भले ही आप लूप का उपयोग कर रहे हों। ऐसा इसलिए है क्योंकि आपको उन तीनों तरीकों से यूआरएल पास करना होगा, और परिणाम लौटाए गए यूआरएल के लिए विशिष्ट है।

उदाहरण के लिए:

for(var i=0; i<10; i++) { 
    url = "action_remote_" + i + ".php"; 
    $.ajax({ 
     type:'POST', 
     url: url, 
     data:$('#' + str_form_id).serialize(), 
     success: function(response) { 
      alert(url); 
     } 
    }); 
} 

जब तक मैं तुम्हें सही ढंग से समझ नहीं कर रहा हूँ ...

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