दिलचस्प पोस्ट
आईई 9 कॉल्स के साथ jQuery के AJAX रिटर्न "प्रवेश निषेध है" PHP में 2 एरेज़ को सम्मिलित नहीं किया जा सकता MySQL क्वेरीज़ / क्वेरीस्ट्रिंग से mysql_real_escape_string से बचने के लिए PDO क्यों बेहतर है? सूचीबैक्स को पॉप्युलेट करने के लिए मैं सभी देशों / शहरों की सूची कहां प्राप्त कर सकता हूं? console.writeline और System.out.println java runtime.getruntime () कमांड लाइन प्रोग्राम निष्पादित करने से आउटपुट प्राप्त कर रहा है JQuery.queue () का उपयोग कर AJAX अनुरोधों को कतार दें चाप (एक वृत्त के) के लिए एसवीजी पथ की गणना कैसे करें Excel में JSON आयात करें django – एक गणना की गई फ़ील्ड से क्वेरीस ऑर्डर करने वाला PHP कार्य एसिंक्रोनस चलाएं सी # स्टैटिक क्लास एक्सटेंशन एक्सटेंशन समर्थित क्यों नहीं हैं? एएसएमएक्स वेब सेवा जेएमएन के बजाय नेट 4.0 में लौट रही है समतल / अन-फ्लैटेन नेस्टेड जेएसएएन ऑब्जेक्ट्स को फ्लैटन करने का सबसे तेज़ तरीका स्काला अस्पष्टता के लिए कहां देखता है?

jsonp सामग्री प्रकार के साथ jQuery.Ajax अनुरोध के बाद parsererror

मैं निम्नलिखित एजेक्स कॉल करने के लिए jQuery के संस्करण 1.5.1 का उपयोग कर रहा हूं:

$.ajax({ dataType: 'jsonp', data: { api_key : apiKey }, url: "http://de.dawanda.com/api/v1/" + resource + ".json", success: function(data) { console.log(data); }, error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); } }); 

सर्वर एक वैध जेसन ऑब्जेक्ट के साथ प्रतिक्रिया करता है:

 { "response": { "type":"category", "entries":1, "params":{ "format":"json", "api_key":"c9f11509529b219766a3d301d9c988ae9f6f67fb", "id":"406", "callback":"jQuery15109935275333671539_1300495251986", "_":"1300495252693" }, "pages":1, "result":{ "category":{ "product_count":0, "id":406, "restful_path":"/categories/406", "parent_id":null, "name":"Oberteile" } } } } 

लेकिन सफलता कॉलबैक कभी नहीं बुलाया जाता है, बजाय त्रुटि कॉलबैक इस आउटपुट का उत्पादन करता है:

 jQuery15109935275333671539_1300495251986 was not called parsererror 

ऐसा क्यों होता है?

मैं jQuery में कोई अतिरिक्त पुस्तकालयों का उपयोग नहीं कर रहा हूँ।

संपादित करें:

अगर मैं "jsonp" के बजाय डेटा टाइप के रूप में "json" के साथ एजेक्स कॉल करने का प्रयास करता हूं, तो सर्वर रिक्त स्ट्रिंग के साथ जवाब देता है।

Solutions Collecting From Web of "jsonp सामग्री प्रकार के साथ jQuery.Ajax अनुरोध के बाद parsererror"

JSONP के लिए आवश्यक है कि प्रतिक्रिया किसी प्रकार की कॉलबैक फ़ंक्शन में लिपटे।

इसलिए सर्वर को इनसे जवाब देना चाहिए:

 someFn({....}); 

कुछ Fn अनुरोध के हिस्से के रूप में पारित किया जाता है, इसलिए सर्वर को इसे पढ़ने और डेटा को उचित रूप से लपेटने की आवश्यकता है।

ये सभी मानते हैं कि आप किसी अन्य डोमेन से सामग्री को हथियाने वाले हैं। यदि हां, तो आप एक ही मूल नीति द्वारा सीमित हैं: http://en.wikipedia.org/wiki/Same_origin_policy

Jquery 1.5 में अपग्रेड करने के बाद और डोमेन में कॉल करने का प्रयास करने के बाद मुझे एक ही समस्या थी। आखिरकार मुझे $ .getJSON मिला। विशेष रूप से,

 $.getJSON(url, function(data){ yourFunction(data); return false; }); 

मैंने जो यूआरएल इस्तेमाल किया था वह इस तरह था:

 var url = WEB_SERVER_URL; url = url + "&a=" + lat; url = url + "&b=" + lng; .... url = url + "&jsoncallback=?"; 

सर्वर में, जो किसी दूसरे सर्वर पर चल रहा है और मेरे पास इस कोड का नियंत्रण शामिल है:

 PrintWriter writer = response.getWriter(); String jsonString = json.toString(JSON_SPACING); String callback = request.getParameter("jsoncallback"); // if callback in URL and is not just the "?" (eg from localhost) if (callback != null && callback.length() > 1) { writer.write(callback + "(" + jsonString + ");"); } else { writer.write(jsonString); } 

(जेसन ऑब्जेक्ट JSONObject का एक उदाहरण है, कोड यहां पाया जा सकता है http://www.json.org/java/ )

जब आप jatnp के रूप में डेटाटाइप (क्रॉस डोमेन अनुरोध बनाना) का उपयोग कर रहे हैं, तो Jquery यादृच्छिक समारोह उत्पन्न करते हैं और संलग्न url को एक कॉलस्ट्रिंग नामक कॉलबैक (callback =?) के रूप में अनुरोध किया जाता है, आपको नीचे दिए गए इस फ़ंक्शन के पैरामीटर के रूप में प्रतिक्रिया json डेटा जोड़ने की आवश्यकता है –

 url : http://www.dotnetbull.com/cross-domain-call.ashx?ref=jquery-jsonp-request url call by ajax : http://www.dotnetbull.com/cross-domain-call.ashx?ref=jquery-jsonp-request&callback=jQuery1510993527567155793_137593181353 

प्रतिक्रिया डेटा इस तरह दिखना चाहिए:

  string callback = context.Request.QueryString["callback"]; if (!string.IsNullOrEmpty(callback)) context.Response.Write(string.Format("{0}({1});", callback, jc.Serialize(outputData))); else context.Response.Write(jc.Serialize(outputData)); 

Jsonp सामग्री प्रकार के साथ jquery.ajax अनुरोध के बाद parsererror के बारे में और पढ़ें:

यहां छवि विवरण दर्ज करें

एक छोटी सी गलती है 🙂 आपको .js और नहीं .json का अनुरोध करना होगा।

 $.ajax({ dataType: 'jsonp', data: { api_key : apiKey }, url: "http://de.dawanda.com/api/v1/" + resource + ".js", success: function(data) { console.log(data); }, error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); } }); 

आह और क्या आपने ध्यान दिया, एपीआई के लिए एक ग्राहक है? https://github.com/dawanda/dawanda-api-client-js

आपको वास्तव में यहां jsonp निर्दिष्ट नहीं करना चाहिए। बस json का उपयोग करें क्योंकि आप बस एक JSON स्ट्रिंग प्राप्त कर रहे हैं। json (padding के साथ json) एक जावास्क्रिप्ट समारोह निष्पादित की उम्मीद है। उस स्थिति में आपको अपने क्वेरीस्ट्रिंग के भीतर "कॉलबैक =" निर्दिष्ट करने की आवश्यकता होती है। मुझे लगता है कि। क्यों कारण jQuery इस तरह से संभाल नहीं सकते, नाम कॉलबैक के साथ एक संपत्ति है।

$। एपीआरजेएसओएन का उपयोग कर किसी ऑब्जेक्ट में प्रतिक्रिया को पढ़ने की कोशिश करें:

 success: function(data) { var json = $.parseJSON(data); } 

सुनिश्चित करें कि जिस सेवा को आप बुला रहे हैं उसे JsonP प्रारूप में डेटा वापस करने की क्षमता है।

यदि आप asp.net webapi का उपयोग कर रहे हैं, तो आप WebApiContrib.Formatting.Jsonp का उपयोग कर सकते हैं, यह ओपन सोर्स है।

सुनिश्चित करें कि आपके पास WebApiConfig.Register में नीचे की तरह एक पंक्ति है

config.Formatters.Instert (0, नया JsonpMediaTypeFormatter (नया JsonMediaTypeFormatter (), "कॉलबैक"));

मैं इस पर मेरे बाल खींच रहा था। उम्मीद है कि यह किसी को मदद करता है

सभी सर्वर jsonp का समर्थन नहीं करते इसके लिए सर्वर को कॉलबैक फ़ंक्शन को उसके परिणामों में सेट करने की आवश्यकता होती है। मैं जेसन प्रतिक्रियाओं का उपयोग उन साइटों से प्राप्त करने के लिए करता हूं जो शुद्ध जेसन वापस करते हैं, लेकिन jsonp का समर्थन नहीं करते हैं (लेकिन भविष्य में हो सकता है):

 function AjaxFeed(){ return $.ajax({ url: 'http://somesite.com/somejsonfile.php', data: {something: true}, dataType: 'jsonp', /* Very important */ contentType: 'application/json', }); } function GetData() AjaxFeed() /* Everything worked okay. Hooray */ .done(function(data){ return data; }) /* Okay jQuery is stupid manually fix things */ .fail(function(jqXHR) { /* Build HTML and update */ var data = jQuery.parseJSON(jqXHR.responseText); return data; }); } 

वही समस्या जो मुझे तब तक मिल रही थी जब तक मैंने पैरामीटर "callback =?" या "सी =?" यूआरएल में

जैसे: " http://de.dawanda.com/api/v1/ " + संसाधन + "। जेसन और सी =?"

आपकी समस्या का समाधान कर सकता है यह मेरे लिए काम किया

इवान त्रिंबोली को धन्यवाद

केवल मैंने जो बदलाव किए हैं वो जोड़ दिया गया है

json-कॉलबैक = someFun

और से अनाम समारोह नाम बदल दिया

समारोह (डीएल)

सेवा मेरे

फ़ंक्शन कुछ फ़न (डीएल)

कोड की पूरी लाइन नीचे दी गई है:

 getJSON("http://localhost/phk/districtList.json?json-callback=someFun", function someFun(dl){ .... .... }