2011-02-03 8 views
10

मैंने अभी संस्करण 1.4 से jQuery के संस्करण 1.5 में अपग्रेड किया है, और अब मेरे AJAX कॉल हमेशा "अमान्य लेबल" त्रुटि के साथ विफल हो जाते हैं।jQuery 1.5 AJAX कॉल JSON अनुरोधों के लिए "अमान्य लेबल" के साथ विफल रहता है

एक उदाहरण अनुरोध है:

jQuery.ajax({ 
    async: false 
    , dataType: "json" 
    , error: function (xhr, status, error) { ... } 
    , success: function (data, status, xhr) { ... } 
    , type: "post" 
    , url: "ajax/request.asp" 
}); 

शुद्ध मैंने पाया इस त्रुटि जब लौटे JSON jQuery के कॉलबैक के साथ लिपटे नहीं है (उदाहरण के लिए उठाया है jQuery1234({ "something": "abcd" })

समस्या मैं लौट रहा हूँ है पर। एक JSON, एक JSONP नहीं है (और मैं इसे AJAX अनुरोध में बताता हूं), तो मुझे लौटाए गए JSON में कॉलबैक निर्दिष्ट क्यों करना चाहिए?

1.5 changelog इस बारे में कुछ भी नहीं कहता है ... (या यह मैं हूं जो नहीं कर सकता पढ़ें?)

अद्यतन:

यह एक काम नहीं कर रहा JSON का एक उदाहरण है:

{ 
    "esito":"Ok", 
    "centriCosto":[ 
     { 
     "id":"1", 
     "descrizione":"Colazione" 
     }, 
     { 
     "id":"2", 
     "descrizione":"Pranzo" 
     }, 
     { 
     "id":"3", 
     "descrizione":"Cena" 
     } 
    ] 
} 

और यह एक ही कॉलबैक स्वरुप में काम कर JSON है:

jQuery1502710949228847014_1296739130498({ 
    "esito":"Ok", 
    "centriCosto":[ 
     { 
     "id":"1", 
     "descrizione":"Colazione" 
     }, 
     { 
     "id":"2", 
     "descrizione":"Pranzo" 
     }, 
     { 
     "id":"3", 
     "descrizione":"Cena" 
     } 
    ] 
}) 

तरह से, Firebug तक उनका कहना है कि वे दोनों वैध JSONs हैं (और वह शुद्धता के बारे में बहुत पसंद करते हैं)।

+0

यह json के साथ ही एक मुद्दा हो सकता है, मैंने देखा है कि 1.4 के बाद से JQ और अधिक कड़े JSON संरचना के बारे में किया गया है है। '07 से मेरा पहला JSON प्रोजेक्ट विफल रहा जब मैंने अपने जेक्यू को अपग्रेड किया, मैंने जेएसओएन आउटपुट खोला और इस पर फर्श लगाया गया कि मैंने इसे कितनी खराब तरीके से संरचित किया। क्या आप JSON पोस्ट कर सकते हैं? – picus

+0

@picus: नहीं, मैं अपने JSON को एकाधिक सत्यापनकर्ताओं के विरुद्ध मान्य करता हूं और यह ठीक है। यदि मैं JSONP कॉलबैक को लागू करता हूं तो यह फिर से काम करना शुरू कर देता है, इसलिए प्रारूप में कोई समस्या नहीं है। – Albireo

+0

@picus: मैंने एक काम नहीं कर रहा है और एक काम कर रहे JSON का एक उदाहरण जोड़ा है। – Albireo

उत्तर

28

ठीक है, मुझे पता चला कि क्या हो रहा है।

jQuery का Validation plug-in jQuery 1.5 के साथ संगत नहीं है (one और two देखें), सही व्यवहार में प्लग-इन उपज को हटा रहा है। link

+0

लिंक साझा करने के लिए धन्यवाद। आपने मेरा दिन बचा लिया! –

+0

मेरे सहकर्मी ने पिछले एक ही मुद्दे को समझने की कोशिश कर आखिरी घंटा बिताया। हमने 1.6 तक अपग्रेड किया और सत्यापन प्लग-इन के साथ कोई और संघर्ष नहीं हुआ। धन्यवाद। –

1

कोशिश: jQuery-1.5.js में json के लिए एक त्वरित खोज किया और पंक्ति 6905 पर इस पाया:

किसी और को इस समस्या है, तो वहाँ प्लग-इन के भंडार में एक पैच है

//, का पता लगाने को सामान्य विकल्प और jsonp के लिए कॉलबैक स्थापित

jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, dataIsString /* internal */) { 

का अनुरोध करता है पहला तर्क से "json" को हटाने जब कल्पना सही व्यवहार जोड़ देगा। dataType:"json"

5

मैं वास्तव में समान समस्या में पड़ गए, लेकिन यह इस बग के लिए संबंधित प्रतीत होता है: http://bugs.jquery.com/ticket/8398

यह जरूरी jQuery सत्यापित करें से संबंधित नहीं है और यह मेरे कुछ समय लिया बातें पता लगाने की। यह पता चला है कि jQuery 1.5 जेसन से jsonp के लिए बाद के AJAX कॉल को संशोधित कर रहा है जो इस त्रुटि को जन्म देता है।

मैं समाधान बग परिवर्तन इतिहास में सुझाव में से एक निम्न और निम्न कोड कहीं से पहले अपने ajax कॉल किया जाता है रखकर यह तय:

$.ajaxSetup({ 
    jsonp: null, 
    jsonpCallback: null 
}); 

भी अन्य ajax अनुरोध के लिए किसी भी समस्याओं को ठीक करना चाहिए।

1

यदि आपका सर्वर-साइड कोड "jsonp" से शुरू होने वाले कॉलबैक नाम पर निर्भर है, तो आपको कोई समस्या हो सकती है। कॉलबैक नाम उपसर्ग को संस्करण 1.5 में "jQuery" में बदल दिया गया था।

1

ऐसा लगता है कि यह अब v1.6 में तय किया गया है - 1.6 के उन्नयन के बाद 1.5.1 & को अपग्रेड करने के बाद एक ही समस्या थी।

2

यहां वैधकर्ता प्लगइन वाले लोगों के लिए एक संभावित समाधान है।

डेटाप्रकार: "पाठ json"

वर्क्स एक आकर्षण की तरह। मुझसे मत पूछो क्यों। क्रोम पर, आप जेसन रिटर्न पर ":" को पार्स करते हुए एक jquery वाक्यविन्यास त्रुटि देख सकते हैं। और इसके बारे में कोई गलती मत करो, वापसी वैध जेसन है। मैंने कोशिश नहीं की लेकिन मुझे संदेह है कि उपरोक्त टॉम का जवाब भी काम करेगा।

0

jQuery 1.7 अद्यतन कर रहा है यह

0

हल करती है यहाँ समाधान है:

$.post("...", {}, 
     function(data) { 

     // dont forget to add below lines   

     },"json"); 
+0

आपको कुछ मेटा टेक्स्ट जोड़ना चाहिए – keyser