2010-04-06 14 views
11

नेस्टेड AJAX 'सफलता' फ़ंक्शन के भीतर से $ (इस) को संदर्भित करने वाले मुद्दों को लेकर ... मुझे पता है कि यह एक दायरा मुद्दा है, लेकिन सफल अपडेट पर संवाद बंद करने के लिए एक साफ तरीका नहीं दिख रहा है। किसी भी मदद के लिए धन्यवाद।

$("#dialog_support_option_form").dialog({ 
     width: 400, 
     height: 180, 
     bgiframe: true, 
     autoOpen: false, 
     modal: true, 
     buttons: { 
      'Save Support Option': function(){ 
       $.ajax({ 
        type: 'POST', 
        url: "support_options/create_support_option.php", 
        data: $(this).find('form').serialize(), 
        success: function(data){ 
         $("#list_support_options").html(data); 
         $(this).dialog('close'); 
        } 
       }); 
      }, 
      'Cancel': function(){ 
       $(this).dialog('close'); 
      } 
     }, 
     close: function(){ 
      $(this).find('input').val(''); 
     } 
    }); 

उत्तर

21

आपको चयनित तत्व में कॉलबैक के दायरे को सेट करने के लिए AJAX विकल्प context: $(this), का उपयोग करना चाहिए।

+0

बूम, बैंग, ज़िंग का उपयोग नहीं करने की उम्मीद कर रहा था। ठीक वही जो मेरे द्वारा खोजा जा रहा था। इस विकल्प के बारे में अफवाह सुनाई लेकिन उसे नहीं मिला। धन्यवाद। – uberdanzik

+0

शानदार, आपने मुझे भी मदद की – Binaryrespawn

4

आप, कि चर की एक प्रति की आवश्यकता है इस तरह:

var dlg = $(this); 
$.ajax({ 
    type: 'POST', 
    url: "support_options/create_support_option.php", 
    data: $(this).find('form').serialize(), 
    success: function(data){ 
    $("#list_support_options").html(data); 
    dlg.dialog('close'); 
    } 
}); 

के बाद से this वापसी पर एक अलग संदर्भ में है, तो आप इसे पकड़ने और यह बंद में पारित करने की जरूरत है :)

+0

एएच। मो 'वर्स, मो' समस्याएं। –

+1

@ जोनाथन जूलियन - ये सभी बंद होने के अंदर चर हैं, आपको लगता है कि 'संदर्भ:' कुछ सेट नहीं करता है? :) –

+0

हाँ, यह काम करता है, लेकिन मैं एक अतिरिक्त चर – uberdanzik

2

$.proxy()

success: $.proxy(function(data){ 
    $(this).dialog('close'); 
}, this); 

साथ यह प्रयास करें आप कर सकते हैं 'पास' 'उपरोक्त' से गुंजाइश के साथ

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