2011-01-24 20 views
5

के साथ एक और पैरामीटर पास करें क्योंकि मैं अपने आवेदन में Asp.Net MVC एप्लिकेशन पर काम कर रहा हूं, मैं एक फॉर्म सबमिट करने के लिए jQuery.POST विधि का उपयोग कर रहा हूं।jQuery.POST - Form.Serialize() - Asp.net MVC 3

उदा।

jQuery.post('/Product/Save', jQuery(document.forms[0]).serialize(), 
     function (data) { alert('Product Added Successfully.); } 
); 

ऊपर कोड स्निपेट में, मैं अन्य पैरामीटर पारित करने के लिए .. मान लें .. ProductID चाहते हैं।

तो, विचार है, मैं दोनों jQuery(document.forms[0]).serialize() और jQuery.POST method में ProductID variable पास करना चाहते हैं, इसलिए मैं अपने controller's action method में दोनों Form and ProductID मिल सकती है।

क्या कोई मुझे बता सकता है कि मैं यह करूँगा?

अग्रिम में धन्यवाद।

उत्तर

13

आप following plugin का उपयोग एक JSON वस्तु में प्रपत्र को क्रमानुसार करने सकता है और एक अन्य पैरामीटर जोड़:

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

इस तरह:

var data = $('form').serializeObject(); 
data['ProductId'] = '123'; 
$.post('<%= Url.Action("Save", "Product") %>', data, function (data) { 
    alert('Product Added Successfully.'); 
}); 
0

अपना कॉलिंग यूआरएल बनाने के लिए Url.Action विधि का उपयोग करने के बारे में क्या? आप उस अतिरिक्त डेटा को शामिल कर सकते हैं जिसकी आपको आवश्यकता है।

<%: Url.Action('Save', 'Product', new { "ProductID", your product id }) %> 

यह आपके jQuery.post विधि कॉल में हार्ड-कोडित यूआरएल को प्रतिस्थापित करेगा।

0

कैसे के बारे में:

var url = '<%= Html.BuildUrlFromExpression<MyController>(c => c.Save(":productId")) %>'; 

आप बाद में यूआरएल को आपके पोस्ट यूआरएल में वास्तविक मूल्य के साथ बदल सकता है।

url.replace(':productId', $productId); 
संबंधित मुद्दे