2013-02-27 229 views
9

मैं एक पूर्ण HTML दस्तावेज़ मैं $.ajax() साथ में खींच कर रहा हूँ मिल गया है, और मेरे .done() कॉलबैक इस तरह दिखता है:jQuery() विन्यास त्रुटि में एक अच्छी तरह से गठित एचटीएमएल स्ट्रिंग परिणामों पर, गैर मान्यता प्राप्त अभिव्यक्ति

function (data, text_status, jq_xhr) { 
    var $what_i_want = $(data).find('#what-i-want'); 
} 

जहां data एक स्ट्रिंग है जिसमें एक अच्छी तरह से बनाए गए HTML दस्तावेज़ की संपूर्णता शामिल है। यह कोड कभी भी .find() तक पहुंचता है।

$(data) पर, मैंने मिलती है:

`Uncaught Error: Syntax error, unrecognized expression: <!DOCTYPE html>`... 

तथ्य:

  • मैं jQuery 1.9.0
  • दस्तावेज़ का उपयोग कर रहा W3C मान्य के अनुसार अच्छी तरह से गठित एचटीएमएल 5 है।

मैंने कई HTML स्ट्रिंग को ऑब्जेक्ट करने के लिए jQuery() का उपयोग किया है, इसलिए मुझे आश्चर्य है कि यह काम नहीं कर रहा है। माना जाता है कि, मुझे कभी भी एक संपूर्ण दस्तावेज़ की कोशिश याद नहीं है। त्रुटि को देखते हुए, मैं अनुमान लगा रहा हूं, शायद, मुझे किसी भी तरह से इस स्ट्रिंग से बचने की जरूरत है। लेकिन मुझे यकीन नहीं है कि कैसे।

संयोग से, इस काम करता है:

var $what_i_want = $('#what-i-want', $.parseHTML(data)) 

लेकिन मैं समझ नहीं क्यों पहले दृष्टिकोण विफल रहता है।

+0

मुझे लगता है कि यह सोच रहा है कि दस्तावेज़ एक HTML खंड नहीं है, लेकिन एक चयनकर्ता है। यदि आपने DOCTYPE को शर्त लगा दी है तो मैं शर्त लगाऊंगा :-) – Pointy

+0

क्या आपने $_i_want = data.find ('# what-i-want') के साथ भी प्रयास किया था? – earthdesigner

+1

एफवाईआई http://jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstring। यह कुछ हद तक आपके मुद्दे से संबंधित है। लेकिन आपके संदर्भ के लिए और अधिक। यदि आप एक पूर्ण HTML दस्तावेज़ लौट रहे हैं तो यह अन्य मुद्दों का भी कारण बन जाएगा। – Brian

उत्तर

2

DOCTYPE एक सामान्य HTML टैग नहीं है; मुझे लगता है कि इसे हटा दिया जाना चाहिए।

यह body के साथ भी परेशानी हो सकती है, क्योंकि आप किसी अन्य दस्तावेज़ को दूसरे के भीतर एम्बेड नहीं कर सकते हैं। आईआईआरसी jquery में आंतरिक विधि सिर्फ फ्लाई पर एक अवधि बना रही है और आंतरिक HTML को अद्यतन कर रही है।

14

मेरे पास एक ही समस्या थी जहां यह अन्य पृष्ठों के सभी प्रकारों पर काम कर रहा था। वे मेरे लिए कुंजी अपग्रेड-गाइड पर ब्रायन के लिंक को पढ़ रहे थे। मुद्दा यह था कि इस पृष्ठ में पहले से ही एक खाली रेखा थी, भले ही मैं केवल लौटा एचटीएमएल का एक हिस्सा डालने का प्रयास कर रहा था, यह लौटा हुआ डेटा एचटीएमएल होने पर विचार नहीं कर रहा था। अपग्रेड गाइड

1.9 के रूप में, एक स्ट्रिंग को केवल HTML माना जाता है यदि यह कम से कम ("<") वर्ण से शुरू होता है।

चूंकि यह एक खाली रेखा से शुरू हुआ और < नहीं था, इसे HTML नहीं माना जाता था। सोचा था कि मैं इस योगदान को जोड़ूंगा क्योंकि मैंने हमेशा यह पता लगाने की कोशिश की कि समस्या क्या थी।

+0

दिलचस्प! प्रतिक्रिया के लिए धन्यवाद। –

+1

ओए! क्या एक कष्टप्रद बग ... हाँ, मैं इसे एक बग बुला रहा हूँ। क्या आप जानते हैं कि क्या वे इसे किसी अन्य 1.9.एक्स संस्करण में बदलते हैं? –

+1

यह कष्टप्रद समाधान मेरे लिए काम करता है ... 'jQuery (jQuery.trim (''))' – colllin