2011-10-30 21 views
9

आईपैड से आईओएस 5 सफारी पर jQuery 1.6 के नवीनतम संस्करण का उपयोग करके, मुझे लगता है कि मेरे सभी AJAX कॉल विफल हो रहे हैं। ये वही AJAX कॉल मेरे द्वारा किए गए सभी अन्य ब्राउज़रों पर अपेक्षित काम करते हैं, और मुझे पूरा यकीन है कि वे सफारी के आईओएस 4 के संस्करण पर भी काम कर रहे थे (हालांकि मैं गलत हो सकता था)। क्या किसी और ने भी इस व्यवहार का अनुभव किया है? यदि हां, तो क्या कोई फिक्स या वर्कअराउंड है? नीचे एक साधारण jQuery AJAX कॉल का एक त्वरित उदाहरण है जो आईओएस 5 की सफारी में एक त्रुटि लौटा रहा है। किसी भी दृष्टिकोण के लिए अग्रिम धन्यवाद!JQuery AJAX फ़ंक्शन आईओएस 5 में काम नहीं कर रहे हैं सफारी/आईपैड

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script> 
    </head> 
    <body> 
    <a id="my-link" href="javascript:;">Click Me!</a> 
    <script type="text/javascript"> 
     jQuery(document).ready(function() { 
     jQuery("#my-link").bind("click", function() { 
      jQuery.get("test.php", function(data) { 
      alert(data); 
      }); 
     }); 
     }); 
    </script> 
    </body> 
</html> 
+1

सफारी का त्रुटि कंसोल निम्नलिखित लौट रहा है ... "XMLHttpRequest http: // www .com/test.php लोड नहीं कर सकता। शून्य से कोई अनुरोध नहीं कर सकता" – ajporterfield

+0

मुझे यह भी जिक्र करना चाहिए कि AJAX कॉल एक एक ही डोमेन के लिए अनुरोध प्राप्त करें। – ajporterfield

+0

http://bugs.jquery.com/ticket/10529 –

उत्तर

14

मुझे अभी भी एक ही समस्या थी। मैं

था
$.ajax({ 
     type: 'post', 
     url: 'http://IP../ws', 
     data: {1:1}, 
     dataType: 'json', 
     success: function(response) { 
      if (lng.Core.toType(callback) === 'function') { 
       // setTimeout(callback, 100, response); 
       callback(response); 
      } 
     }, 
     error: function(xhr, type) { 
      console.log('error') 
      if (error) { 
       setTimeout(error, 100, result); 
      } 
     } 
    }); 

बदली हुई यूआरएल: 'http: //IP../ws', यूआरएल को: 'ws',

मैं नहीं कर रहा हूँ एक jQuery उपयोगकर्ता बिल्कुल लेकिन के लिए उपयोग करने के लिए है एक परियोजना इसलिए सुनिश्चित नहीं है कि यह आपकी मदद कर रहा है या नहीं बल्कि मेरे लिए काम करता है।

+0

मैं दाथी से सहमत हूं। एकमात्र तरीका मैं अपने AJAX कॉल को चलाने के लिए प्राप्त कर सकता था, एक ABSOLUTE पथ के बजाय एक रिश्तेदार पथ का उपयोग करना था। – Doug

+0

हां। यही था वह। बिल्कुल ठीक। सही जवाब के रूप में चिह्नित किया जाना चाहिए। –

+0

मुझे विश्वास नहीं है कि यह तय है, मैं कसम खाता हूं कि एक ही समारोह एक महीने से अधिक समय तक काम कर रहा था, फिर आज यह कॉलबैक फ़ंक्शन चला रहा था - शायद यह झूठी-सकारात्मक सुरक्षा जांच का परिणाम है, क्योंकि यह अभी भी काम कर रहा था क्रोम और मेरे सभी अन्य डिवाइस। वैसे भी, मैं खुश हूँ, धन्यवाद! – tylerl

1

सफारी को पुनरारंभ करें - इसे छोड़ दें और इसे चल रहे कार्यों से मार दें।

अन्य चीजों से मैंने पढ़ा है कि यह सुरक्षा संदर्भों और क्रॉस साइट स्क्रिप्टिंग हमलों की रोकथाम से संबंधित है, और सफारी को कुछ अलग-अलग नेटवर्क पर चलने पर काफी सही नहीं मिल रहा है और अब इसके बिना किसी नए नेटवर्क पर है बदलते नेटवर्क के बीच बंद कर दिया गया है।

आज इसे अपने आप में चलाएं, w/plain HTML/जावास्क्रिप्ट/PHP XMLHttpRequest अनुरोध।

0

सफारी मोबाइल में एक बग है जो अचानक और अनपेक्षित रूप से AJAX कॉल के साथ परेशानी देता है यदि कोई फ़ाइल चल रही है। सफारी Content-Disposition: attachment; हेडर के साथ डाउनलोड करने के बाद POST के बजाय "विकल्प" http संदेश भेजना शुरू कर सकता है। आप यह देखने के लिए देख सकते हैं कि सफारी मोबाइल और सर्वर के बीच फिडलर का उपयोग करके यह हो रहा है कि सफारी भेजने वाले HTTP संदेश क्या हैं।

सफारी मोबाइल में "स्थिति" पुनरारंभ होने पर रीसेट हो जाती है।

इसकी समीक्षा Stackoverflow: JQuery Ajax stopped working with IOS 5.0.1 पर अच्छी तरह से की जाती है।

1

मुझे एक मुद्दा का सामना करना पड़ा था कि सफारी ब्राउज़र में आईपैड में jQuery AJAX कॉल विफल हो गया था। त्रुटि यह है कि आपको पृष्ठ/निर्देशिका तक पहुंचने की अनुमति नहीं है। मैं अजाक्स एसिंक संपत्ति को सही में बदलकर समस्या को ठीक करता हूं।

$.ajax({ 
     type: 'GET', 
     url: "". 
     async: true, 
     cache: true, 
     crossDomain: false, 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     error: function (jqXHR, err) { 
      console.log(jqXHR.responseText); 
      alert("Error" + jqXHR.responseText); 
     }, 
     success: function (data, status) { 

      }); 
0

मुझे इसे बनाना है ताकि इसे काम करने के लिए त्रुटि पर 20 बार फिर से प्रयास करें। कोड उदाहरण:

function my_original_function(form) 
{ 
    my_original_function_ajax(form, 1); 
} 

function my_original_function_ajax(form, attempts) 
{ 
    console.log('Attempts #'+(attempts)); 

    jQuery.ajax({ 
    type: 'POST', 
    url: form.action, 
    processData: false, 
    data: $(form).serialize(), 
    cache: false, 
    success: function(html){ 
     console.log('success!!'); 
    }, 
    error: function (xhr, status, error) { 
     // make up to 20 attempts if error 
     if (attempts <= 20) { 
     my_original_function_ajax(form, attempts + 1); 
     } 
    } 
    }); 
} 
0

मेरे पास एक ही समस्या थी लेकिन मैं पूरी तरह से कुछ अलग खोज कर समाप्त हुआ।

मैं की तरह कुछ था:

function load_one(var1 = null, var2 = null) { ... } 
function load_two() { ... } 

और उसके बाद मैं

$(window).load(function() { 
    load_one(var_x, var_y); 
    load_two(); 
}); 

सब कुछ iPhone के लिए क्रोम, फायरफॉक्स, OSX के लिए सफारी, iPhone के लिए सफारी, क्रोम में ठीक काम किया था, लेकिन पर आईपैड के लिए एज और सफारी कुछ भी काम नहीं किया। तो मैंने इसे एज पर और डेवलपर टूल के अंदर खोला, यह उस रेखा पर एक त्रुटि दिखा रहा था जहां load_one फ़ंक्शन परिभाषित किया गया था।

मुझे यकीन नहीं था कि यह क्या था लेकिन त्रुटि ) expected ने कहा, इसलिए मैंने फ़ंक्शन पैरामीटर के लिए डिफ़ॉल्ट मानों को हटाने का निर्णय लिया और सब कुछ अचानक काम किया। मुझे यकीन नहीं है कि जावास्क्रिप्ट में डिफ़ॉल्ट पैरामीटर मानों के साथ समस्याएं हैं, लेकिन स्पष्ट रूप से कुछ ब्राउज़रों के साथ समस्याएं हैं।

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