2013-02-15 20 views
27

मैं PHP का उपयोग कर एक रिकॉर्ड को हटाने हूँ दर्रा। मैं कार्रवाई की पुष्टि करने के लिए एक JQuery UI संवाद का उपयोग करना चाहता हूं, लेकिन मुझे नहीं पता कि एक चर (URL रिकॉर्ड) को रीडायरेक्ट URL फ़ंक्शन पर कैसे पास किया जाए, या URL को window.location.href तक पहुंचने दें।JQuery यूआई के लिए एक चर संवाद

$("#confirm").dialog({ 
resizable: false, 
autoOpen: false, 
modal: true, 
buttons: { 
    'OK': function() { 
      window.location.href = 'url and myvar??'; 
     $(this).dialog("close"); 
     }, 
    'Cancel': function() { 
     $(this).dialog("close"); 
     } 
    } 
}); 


$("#delete").click(function() { 
    $("#confirm").dialog("open").html ("Are U Sure?"); 
    return false; 
}); 

एचटीएमएल

<a href='index.php?recordid=$row[recordid]' id='delete'>DELETE</a> 

वहाँ यह करने के लिए एक अच्छा तरीका है?

उत्तर

5

आप (, Ok बटन के व्यवहार इस मामले में) क्लिक पर संवाद के विन्यास बदलना चाहते हैं। इसके लिए आपके पास उनमें से कई समाधान हैं बदसूरत (आईएमओ)। मैं तुरंत एक संवाद पैदा करने, और इसे नष्ट सलाह होगा एक बार यह प्रयोग किया गया है, कुछ इस तरह:

$("#delete").click(function(ev) { 
    ev.preventDefault(); // preventDefault should suffice, no return false 
    var href = $(this).attr("href"); 
    var dialog = $("<div>Are you sure?</div>"); 

    $(dialog).dialog({ 
     resizable: false, 
     autoOpen: true, 
     modal: true, 
     buttons: { 
      'OK': function() { 
       window.location = href; 
       $(this).dialog("close"); 
      }, 
      'Cancel': function() { 
       $(this).dialog("close"); 
      } 
     }, 
     close: { 
      $(this).remove(); 
     } 
    }); 
}); 

या और भी बेहतर, एक समारोह में की पुष्टि संवाद संपुटित ताकि आप इसे पुन: उपयोग कर सकते हैं ताकि तरह, :

function confirmDialog(msg) { 
    var dialog = $("<div>"+msg+"</div>"); 
    var def = $.Deferred(); 

    $(dialog).dialog({ 
     resizable: false, 
     autoOpen: true, 
     modal: true, 
     buttons: { 
      'OK': function() { 
       def.resolve(); 
       $(this).dialog("close"); 
      }, 
      'Cancel': function() { 
       def.reject(); 
       $(this).dialog("close"); 
      } 
     }, 
     close: { 
      $(this).remove(); 
     } 
    }); 
    return def.promise(); 
} 

और फिर जैसे कि यह उपयोग करती हैं इसलिए

confirmDialog("are your sure?").done(function() { 
    window.location = $(this).attr("href"); 
}).fail(function() { 
    // cry a little 
}); 

आपको यह देखना होगा अगर आस्थगित वस्तु को अस्वीकार कर दिया या हल हो गई इससे पहले कि आप संवाद को बंद कर दिया गया है हो सकता है, इस बात की पुष्टि आर सुनिश्चित करने के लिए करीब पर बाहर निकलता है (न केवल 'रद्द करें' बटन दबाकर)। यह def.state() === "लंबित" सशर्त के साथ किया जा सकता है। http://api.jquery.com/category/deferred-object/

+0

पास: {$ (this) .remove();} रिटर्न एक त्रुटि – Vlado

62

आप .data() विधि का उपयोग कर आप के लिए डाटा स्टोर करने की कोशिश कर सकते हैं:

jQuery बारे में अधिक जानकारी के लिए स्थगित कर

: एक चर पारित करने के लिए इस उत्तर Passing data to a jQuery UI Dialog

उदाहरण के लिए पर एक नजर डालें, तो आप इसे डेटा समारोह का उपयोग कर, स्टोर कर सकते हैं संवाद

$("#dialog_div") 
.data('param_1', 'whateverdata') 
.dialog("open"); 

खोलने से पहले तो आप इस से वापस प्राप्त कर सकते

var my_data = $("#dialog_div").data('param_1') 
+0

मैं अपने कोड में .data साथ php चर पारित कर सकते हैं? 'कोड' $ (" # पुष्टिकरण ") डेटा ('रिकॉर्डिड', '?? var_php ??')। संवाद (" खुला ")। एचटीएमएल (" क्या आप निश्चित हैं? "); –

+2

मैं php से बहुत परिचित नहीं हूं, लेकिन आपने '$ (" # पुष्टि ") की कोशिश की है। डेटा ('रिकॉर्डिड', '')' यदि यह एक php फ़ाइल भी लेता है http://stackoverflow.com/questions/5310216/passing-php-variable-into-javascript अगर यह आपको – akotian

0

हटाया जा रहा कार्यों शायद किसी GET का उपयोग नहीं किया जाना चाहिए, लेकिन यदि आप इसे इस तरह से मैं jQuery में $ .data का उपयोग कर की सिफारिश करेंगे करना चाहता था इसलिए प्रत्येक लिंक एक डेटा-रिकार्ड आईडी गुण था। फिर लिंक में से किसी एक पर क्लिक करने पर, यह संवाद पॉप अप करता है और जब पुष्टि हुई कि यह यूआरएल में और रीडायरेक्ट करता है। उदाहरण:

$(function(){ 
    $(".deleteLink").click(function(){ 
     var id = $(this).data("record-id"); 
     var myHref = $(this).attr('href'); 
     $("#confirmDialog").dialog({ 
      buttons:{ 
      "Yes": function() 
       { 
        window.location.href = myHref + id; 
       } 
      } 
     }); 
    }); 

});

<a class="deleteLink" data-record-id="1">Delete</a> 
... 
<div id="confirmDialog"> 
    <p>Are you sure?</p> 
</div> 
+0

धन्यवाद में मदद करता है पर लेकिन उर कोड के साथ एक नज़र किसी भी संवाद बॉक्स –

+0

@PaoloRossi क्षमा करें, कि HTML शामिल करना भूल प्रदर्शित नहीं। यही पर है। –

+0

दुर्भाग्यवश वेरिएबल पास नहीं करते हैं लेकिन सभी href मान पास करते हैं –

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