2013-07-22 5 views
10

मैं AJAX कॉल के साथ सबमिट किए गए फॉर्म को प्रतिस्थापित करने का प्रयास कर रहा हूं। कार्रवाई को फॉर्मकोलेक्शन की आवश्यकता है और मैं एक नया मॉडल नहीं बनाना चाहता हूं। तो मुझे पूरे फॉर्म को पास करने की आवश्यकता है (फॉर्म सबमिट करने की तरह) लेकिन AJAX कॉल के माध्यम से। मैंने जेसन को क्रमबद्ध करने और उपयोग करने की कोशिश की लेकिन फॉर्मकोलेक्शन खाली है। यह मेरा कार्रवाई हस्ताक्षर है:एजेक्स कॉल का उपयोग करके फॉर्मकलेक्शन कैसे पास करें?

var form = $("#onlineform").serialize();    
      $.ajax({ 
       url: "/Register/CompleteRegisteration",     
       datatype: 'json', 
       data: JSON.stringify(form), 
       contentType: "application/json; charset=utf-8",     
       success: function (data) { 
        if (data.result == "Error") { 
         alert(data.message); 
        } 
       } 
      }); 

अब मैं कैसे डेटा formcollection में पारित कर सकते हैं:

public ActionResult CompleteRegisteration(FormCollection formCollection) 

और यहाँ मेरी सबमिट बटन पर क्लिक करें है?

उत्तर

29

FormCollection के बाद से मुख्य-मान युग्म की एक संख्या है, JSON अपने प्रतिनिधित्व के लिए अनुचित डेटा स्वरूप है।

var form = $("#onlineform").serialize(); 
$.ajax({ 
    type: 'POST', 
    url: "/Register/CompleteRegisteration", 
    data: form, 
    dataType: 'json', 
    success: function (data) { 
     if (data.result == "Error") { 
      alert(data.message); 
     } 
    } 
}); 

कुंजी परिवर्तन: अनुरोध पोस्ट करने के लिए सेट की

  1. प्रकार (यहाँ आवश्यक नहीं है, लेकिन लगता है और अधिक प्राकृतिक)
  2. बजाय धारावाहिक रूप तुम बस धारावाहिक रूप स्ट्रिंग का उपयोग करना चाहिए अनुरोध के रूप में JSON स्ट्रिंग डेटा
  3. सामग्री टाइप हटा दिया गया - हम अब JSON नहीं भेज रहे हैं
+0

टाइप करने के बाद "," होना चाहिए: 'POST' लाइन – PAVITRA

+1

@PAVITRA, जोड़ा गया, धन्यवाद – Andrei

5

प्रयास करें:

$(<your form>).on('submit',function(){ 
    $.ajax({ 
     url: "/Register/CompleteRegisteration" + $(this).serialize(), 
     // place the serialized inputs in the ajax call     
     datatype: 'json', 
     contentType: "application/json; charset=utf-8",     
     success: function (data) { 
      if (data.result == "Error") { 
       alert(data.message); 
      } 
     } 
    }); 
}); 
+0

धन्यवाद। जमा करने के लिए AJAX कॉल संलग्न करना कुंजी था! – Armen

1

यदि कोई फॉर्मकोलेक्शन में अतिरिक्त डेटा जोड़ना चाहता है तो आप नीचे आज़मा सकते हैं।

<script type="text/javascript"> 
function SubmitInfo() 
{ 
    var id = $("#txtid").val();  
    var formData = $('#yourformname').serializeObject(); 
    $.extend(formData, { 'User': id }); //Send Additional data 

    $.ajax({ 
     url: 'Controlle/GetUser', 
     cache: false, 
     type: 'POST', 
     dataType: 'json', 
     data: decodeURIComponent($.param(formData)), 
     success: function (data) { 
      $('#resultarea').html(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert("AJAX error: " + textStatus + ' : ' + errorThrown); 
     } 
    }); 
} 

$.fn.serializeObject = function() { 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      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; 
}; 
<script/> 

कार्रवाई विधि

public ActionResult GetUser(FormCollection frm) 
    { 
    int UserId = Convert.ToInt32(frm["user"]); 
    // your code 
    return Json(data, JsonRequestBehavior.AllowGet); 
    } 

अधिक जानकारी के लिए लिंक देखें। http://geekswithblogs.net/rgupta/archive/2014/06/25/combining-jquery-form-serialize-and-json.stringify-when-doing-ajax-post.aspx

+0

जैसा कि स्टैक उपयोगकर्ताओं द्वारा सुझाया गया है, मैंने पोस्ट और कोड और विवरण जोड़ा है। –

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