2009-09-30 15 views
5

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

मैंने 'डेवलपमेंट' मेनू चालू कर दिया है और 'उपयोगकर्ता एजेंट' को मोबाइल सफारी में बदल दिया है यह देखने के लिए कि इससे कोई फर्क पड़ता है, लेकिन यह अभी भी चीजों के पीसी पक्ष पर काम करता है।

मुझे नहीं लगता कि यह एक क्रॉस साइट प्रतिबंध है, क्योंकि सभी AJAX कॉल इत्यादि एक ही सर्वर और पोर्ट नंबर से बने होते हैं।

क्या कोई तरीका है कि हम एमुलेटर पर जावास्क्रिप्ट डिबगिंग कर सकते हैं यह देखने के लिए कि कॉल कहां विफल हो रहा है?

धन्यवाद, देवन

उत्तर

4

आप मोबाइल सफारी में जावास्क्रिप्ट कंसोल सक्षम कर सकते हैं। निर्देश here देखें। यह मूल रूप से सेटिंग्स-> सफारी-> डेवलपर-> डीबग कंसोल है। यह एमुलेटर, और वास्तविक डिवाइस पर काम करता है।

+0

लिंक टूटी हुई है :( – Pathros

5

मैं एक ही समस्या में भाग गया।

यूआरएल की जांच करें: उस ऑब्जेक्ट में पैरामीटर जिसे आप jQuery.ajax फ़ंक्शन पर भेजते हैं। इसे "http://the/full/url" से "/ बस///सापेक्ष/से/रूट/भाग" से छोटा करें

मेरे लिए, यह सफारी मोबाइल बग की तरह लगता है।

+0

टिप के लिए धन्यवाद -। हम वास्तव में जावास्क्रिप्ट होस्टिंग एक अलग सर्वर/साइट से डोमेन से XML धारा खींच रहे थे मैं यह सोचते हैं कि यह एक XSS सुरक्षा उपाय है कि iphone है किसी तृतीय पक्ष सर्वर से XMLHttpRequest की अनुमति नहीं देता है? – Devan

+0

यह मेरे लिए भी काम करता है। – Rob3C

+0

इस जवाब ने मेरे लिए समस्या हल की, कई सालों बाद आईफ़ोन 7 पर सफारी चला रहा था। – iep

0

ठीक है, मुझे लगता है कि हमने इसे हल कर लिया है, हालांकि यह अभी भी मुझे परेशान करता है।

यदि हम अपने कोड में onReady() अनुभाग के बाद सीधे 'डमी' XMLHttpRequest करते हैं, तो ऐसा लगता है कि यह किसी भी अनुरोध को अनब्लॉक करता है।

http = new XMLHttpRequest(); 

http.open("GET", "/getdata/dummy.xml); 
http.onreadystatechange=function() { 
    if(http.readyState == 4) { 
     // alert(http.responseText); 
    } 
} 
http.send(null); 

यदि मैं इस कोड ब्लॉक पर टिप्पणी करता हूं, तो पूरी तरह से मान्य XML अनुरोधों का पालन करने में विफल रहता है। एक बार फिर, यह केवल डिवाइस पर है, क्योंकि सफारी और एमुलेटर इस कोड ब्लॉक के बिना काम करेगा।

पुनश्च: dummy.xml बस "कुछ भी नहीं"

0

जवाब के लिए मुझे सिर टैग में स्क्रिप्ट टैग आगे बढ़ रहा था देता है।

0

मुझे एक वेबसाइट के लिए AJAX चैट लिखने में एक ही समस्या थी। समस्या कैश है। कोड की इस पंक्ति को जोड़ें और समस्या हल हो गई है।

$.ajaxSetup({ cache: false }); 
संबंधित मुद्दे