2012-05-08 16 views
18

सबसे पहले, मैं कई विषयों में अपनी समस्या का उत्तर ढूंढ रहा हूं और मुझे कोई समाधान नहीं मिला जो मेरे कोड के साथ काम करता है।

मैं एक सर्वलेट से उत्तर प्राप्त करने, अगर मैं http://XXXZZZ/Servlet/Login?login=pepe&pass=1234 करने के लिए जाना मैं मान्य JSON प्राप्त की उम्मीद के रूप में कोशिश कर रहा हूँ:

{"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"} 

लेकिन जब मैं $ .ajax के साथ एक ही प्रयास करते हैं, मैं 2 त्रुटियों मिल ।

(पॉप अप विंडो में)
$.ajax({ 
    type : "Get", 
    url :"http://XXXZZZ/Servlet/Login", 
    data :"login="+login+"&password="+pass, 
    dataType :"jsonp", 
    success : function(data){ 
    alert(data);}, 
    error : function(httpReq,status,exception){ 
    alert(status+" "+exception); 
    } 
}); 

पहले त्रुटि:

parsererror Error: jQuery17104145435250829905_1336514329291 was not called 

दूसरा त्रुटि (क्रोम कंसोल में):

Uncaught SyntaxError: Unexpected token : Login 1 

(और वहाँ JSON मैं प्रतीक्षा कर रहा हूँ है)।

पीएस मुझे डेटा टाइप का उपयोग करना है: "jsonp", क्योंकि अगर मैं "जेसन" का उपयोग करता हूं तो मुझे क्रॉस-डोमेन के साथ भी समस्याएं होती हैं।

+0

क्या के लिए त्रुटि समारोह? – adeneo

+1

आप * जेएसओएनपी * बल नहीं दे सकते। इसे सर्वर द्वारा समर्थित और वापस किया जाना है। यदि यह भाग्य से बाहर नहीं है। यदि आपके पास सर्वर पर नियंत्रण है, तो इसे JSONP का समर्थन करें। –

+0

मैं सर्वर प्रोग्रामिंग भी कर रहा हूं;) –

उत्तर

10
succes : function(data){ 

लिखने में कोई त्रुटि है कि:

success : function(data){ 
+8

+1। – undefined

+0

नहीं है, खेद है कि मैं गलत इसे यहाँ लिखा कोड में अपनी लिखित "सफलता" –

1

सबसे पहले आप अपनी सफलता पैरामीटर में कोई गलती है, आप अंत में चूक गए। साथ ही, जब आप एक JSONP अनुरोध कर रहे हैं तो आपको JSONP प्रारूप में अपनी JSON जानकारी वापस करने की आवश्यकता है; जिसमें वापसी स्ट्रिंग के हिस्से के रूप में कॉलबैक टोकन शामिल होना चाहिए। एक नमूना JSONP स्ट्रिंग पसंद लगेगा यह:

yourcallbacktoken({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}) 

JSONP विनिर्देशों के बारे में अधिक जानकारी के लिए इस पेज पर एक नज़र डालें: http://devlog.info/2010/03/10/cross-domain-ajax/

20

आप jsonp उपयोग कर रहे हैं तो वाक्य रचना गलत है

आप

myJsonMethod({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}); 

लौट सकते हैं और भी अपने ajax अनुरोध के विकल्प के लिए जोड़ने की जरूरत है

jsonp: false, 
jsonpCallback: "myJsonMethod" 

तो

$.ajax({ 
    type : "Get", 
    url :"http://XXXZZZ/Servlet/Login", 
    data :"login="+login+"&password="+pass, 
    dataType :"jsonp", 
    jsonp: false, 
    jsonpCallback: "myJsonMethod", 
    success : function(data){ 
     alert(data);}, 
    error : function(httpReq,status,exception){ 
     alert(status+" "+exception); 
    } 
}); 

(और के पाठ्यक्रम को ठीक success रूप @voyager विख्यात)

+0

तो सर्वर मैं 'स्थिर JSONObject लॉग इन बदलना होगा में (स्ट्रिंग लॉगिन, स्ट्रिंग पासवर्ड) फेंकता JSONException {' को ' स्थिर स्ट्रिंग लॉगिन (स्ट्रिंग लॉगिन, स्ट्रिंग पासवर्ड) { ... json.put ("id", id); json.put ("लॉगिन", लॉगिन); json.put ("कुंजी", कुंजी); वापसी ("myJsonMethod (" + json + ");"); ' –

+0

@PabloPostigo, आप [' JSONPObject' वर्ग] (http://jackson.codehaus.org/1.5.3/javadoc/org/codehaus का उपयोग कर सकते हैं /jackson/map/util/JSONPObject.html) –

+0

में भी ऐसी ही समस्या थी। jsonp जोड़ना: झूठी मेरे लिए क्या निश्चित चीजें थीं – Luke

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