2010-10-14 10 views
19

मैं एक PHP फ़ाइल कि बस पर कि क्या यह काम किया है या नहीं के आधार देता है 1/0 के लिए एक फार्म क्षेत्र पोस्ट करने के लिए jQuery का उपयोग कर रहा "गुण अपरिभाषित की 'defaultView' पढ़ा नहीं जा सकता" ... कीjQuery त्रुटि

निकालें कोड:

$.ajax({ 
    url: "ajax/save_text.php", //Relative?!? 
    //PHP Script 
    type: "POST", 
    //Use post 
    data: 'test=' + $(this).val(), 
    datatype: 'text', 
    //Pass value  
    cache: false, 
    //Do not cache the page 
    success: function(html) { 
     if (html == 1) { 
      $(this).hide().siblings('span').html($(this).value).show(); 
        alert("awesome!"); 
     } else alert('It didn\'t work!'); 
    }, 
    //Error 
    error: function() { 
     alert("Another type of error"); 
    } 
}); 

हालांकि हर यह सफल (एचटीएमएल == 1) कंसोल त्रुटि फेंकता है "Uncaught TypeError: संपत्ति पढ़ा नहीं जा सकता अपरिभाषित की 'defaultView'" और सतर्क कभी नहीं होता है ...?

Google को इस त्रुटि और jQuery पर अधिक जानकारी नहीं है, जो कारण जानता है?

उत्तर

31

यह क्योंकि this नहीं है क्या इससे पहले कि आप के साथ काम कर रहे थे, अब यह था ajax jQuery वस्तु, जोड़ने context option of $.ajax() इस तरह है:

$.ajax({ 
    context: this, 
    url: "ajax/save_text.php", 
    ... 

इस तरह this अपने कॉलबैक के अंदर के रूप में जब एक ही this को संदर्भित करता है आप $.ajax() पर कॉल कर रहे हैं। वैकल्पिक रूप से, बस एक अलग चर में this के संदर्भ पर रखें।

इसके अलावा, आपको $(this).value समायोजित करने की आवश्यकता होगी, शायद आपको this.value या $(this).val() का समायोजन करना होगा।

+0

बहुत धन्यवाद, मूर्ख त्रुटि, मैं वादा करता हूं कि मैं बेहतर हो रहा हूं :-) –

+1

@Pez - मूर्खतापूर्ण नहीं, मुझे लगता है कि यह प्रतिद्वंद्वी है बल्कि यह भी * डिफ़ॉल्ट * संदर्भ व्यवहार नहीं है। –

+0

हाँ, यह थोड़ा सा रिफैक्टरिंग के बाद भी मुझे थोड़ा सा है। जवाब के लिए धन्यवाद। :) – Bombe

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