2012-11-23 13 views
6

jQuery:jQuery AJAX स्थिति "200 ठीक", लेकिन कोई डेटा प्रतिक्रिया

$.ajax({ 
url : url, 
type : 'GET', 
dataType: 'json', 
data: { 
    'FN' : 'GetPages', 
    'PIN' : '7659' 
}, 
xhrFields: { 
    withCredentials: true 
}, 
crossDomain: true, 
success: function(data) { 
    alert('succsess'); 
    console.log('data', data); 
}, 
error: function (xhr, ajaxOptions, thrownError) { 
    alert('error'); 
    console.log(xhr.status); 
    console.log(thrownError); 
} 
}); 

Firebug फ़ायरफ़ॉक्स नेटवर्क

Firebug Error http://s14.directupload.net/images/121123/8ar5vljg.png

क्या

AJAX होता है "त्रुटि:" घटना टी हो जाता है riggered और मेरे console.log आउटपुट हैं:

xhr.status -> 0

thrownError -> (empty String)

यह सामान्य है? जब मैं ब्राउज़र में यूआरएल टाइप करता हूं तो मुझे इसमें JSON सामग्री के साथ एक फ़ाइल डाउनलोड प्राप्त होता है, यह सही समस्या नहीं होनी चाहिए?

+0

ब्राउज़र पर यूआरएल प्रतिक्रिया है: [{"पीजी": 0, "descr": "पीसी 1"}, {"पीजी": 1, "descr": "पीसी 2"}, {" स्नातकोत्तर ": 2," descr ":" PC3 "}, {" स्नातकोत्तर ": 3," descr ":" HG1 "}, {" स्नातकोत्तर ": 4," descr ":" HG2 "}, {" स्नातकोत्तर " : 5, "descr": "HG3"}, { "स्नातकोत्तर": 6, "descr": "HG4"}, { "स्नातकोत्तर": 7, "descr": "DW1"}, { "स्नातकोत्तर": 8 , "descr": "DW2"}, {"pg": 9, "descr": "CMN"}] – user1841515

+0

इसके अलावा मेरी समझ यह है कि ** jsonp ** काम नहीं करेगा कारण मुझे कुछ भी बदलने की अनुमति नहीं है सर्वर और इसकी प्रतिक्रिया जेसन प्रारूप में रहेगी और jsonp प्रारूप – user1841515

+0

jsonp सर्वर को प्रभावित नहीं करेगा। लेकिन यह सीओआरएस मुद्दों को पाने में मदद कर सकता है। सर्वर – JonWells

उत्तर

10

@CrimsonChin के लिए धन्यवाद मैं अपने एक ही मूल नीति समस्या पता

In computing, the same origin policy is an important security concept for a number of browser-side programming languages, such as JavaScript. The policy permits scripts running on pages originating from the same site to access each other's methods and properties with no specific restrictions, but prevents access to most methods and properties across pages on different sites.[1]

(http://en.wikipedia.org/wiki/Same_origin_policy से)

अपने संसाधनों बस एक HTTP प्रतिक्रिया हेडर को जोड़े, अर्थात् की आवश्यकता करने के लिए बुनियादी ऐक्सेस देने से जावास्क्रिप्ट ग्राहकों :

Access-Control-Allow-Origin: * 
Access-Control-Allow-Origin: http://foo.example.com 

(http://enable-cors.org/ से)

OFC, JSON प्रतिक्रिया को JSONP प्रतिक्रिया में बदलना भी काम करेगा। Thx @djakapm

2

मैं नहीं छवि से पता लगा, लेकिन अगर आप कोशिश कर रहे हैं अन्य डोमेन के लिए AJAX अनुरोध भेजने के लिए, आप JSONP उपयोग करने की आवश्यकता, सरल AJAX अनुरोध नहीं होगा पर्याप्त

dataType: 'jsonp' को dataType: 'json' को बदलने की कोशिश

और जोड़ने callback=? अपने URL

+0

ठीक है इसलिए मैंने इसे आजमाया और मुझे निम्न त्रुटि मिली: \t सिंटेक्स त्रुटि descr ":" DW1 "}, {" pg ": 8," descr ":" dw2 "}, {" pg ": 9, "descr": "सीएमएन"}] – user1841515

+0

और त्रुटि: jQuery172046435253250156217_1353659110552 को – user1841515

+0

नहीं कहा गया था क्या आपके पास सर्वर प्रतिक्रिया पर नियंत्रण है? php में मैं आमतौर पर इस तरह प्रतिक्रिया देता हूं: $ _GET ['callback']। '()'। यह एक जावास्क्रिप्ट फ़ंक्शन कॉल की नकल करेगा – djakapm

3

को यह एक

प्रयास करें
+0

को अनुमति देने के लिए सर्वर वेब.कॉन्फिग को अपडेट करने का एकमात्र विकल्प है, मैंने इस कोड को चलाया और निम्नलिखित अलर्ट बॉक्स प्राप्त किया: { "readyState": 4, "स्थिति": 200, "statusText": "सफलता"} और Firebug में किसी त्रुटि को सांत्वना: सिंटैक्स त्रुटि: अवैध चरित्र ** json में ** प्रतिक्रिया "descr" : "सीएमएन"}] <- और उस तीर पर इंगित एक तीर जो वहां नहीं होना चाहिए !? – user1841515

+0

@ user1841515 जेसन लिंट (http://jsonlint.com/) के माध्यम से service_data को चलाने का प्रयास करें ताकि यह सुनिश्चित किया जा सके कि जेसन अच्छी तरह से स्वरूपित है – JonWells

+0

@ क्रिमसन चिन मैंने जेसन की प्रतिलिपि बनाई और एक चेक चलाया -> मान्य JSON – user1841515

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