Ajax 选择要发布和 searlize 的表单输入

ajax select which form inputs to post and searlize

本文关键字:searlize 表单 输入 选择 Ajax      更新时间:2023-09-26

我有一个使用 AJAX 的表单。如何选择要将表单的哪些输入发送到后面的代码(而不是整个表单)?阿贾克斯

  function send()
    {
         $.ajax({
                    type: 'POST',
                    url: this.action,
                    data: {'data1': $('#data1').val(), 
                    'data2': $('#data2').val() },
                    success: function (done) {
            $('#box').html(done.output);
        });
    }

形式

@using (Html.BeginForm())
{
<input id="data1" value="0" name="data1" onclick="send();" >
<input id="data2" value="0" name="data2" onclick="send();" >
}

您可以在 data 参数中指定它们:

$.ajax({
    type: 'POST',
    url: this.action,
    data: { 
        field1: $('#field1').val(), 
        field2: $('#field2').val() 
    }
});
            var NewKeyword = $('#txtbox1').val();
            var type = $('#txtbox2').val()
            $.ajax({
                type: "POST",  
                url: "url...",
                data: "{'type':'" + type + "','keyword' : '" + NewKeyword + "' }",

那么在 C# 中,您必须能够接受 "type 和 "关键字作为 WebMethod 中的参数

你可以做这样的事情:

$form = $('form');
$.ajax({
        type: 'POST',
        url: this.action,
        data: {
            'name': $('fieldNameForName', $form).val(),
            'age': $('fieldNameForAge', $form).val()
        }
});

您可以编写一个接受表单选择器的函数,而不是使用序列化:

function getFormData(formSelector,toSend){
    var formData = {};
    for(var i in toSend){
        var field = formSelector.find('input[name="'+toSend[i]+'"]');
        if(field!==undefined) formData[toSend[i]] = field[0].val();
    }
    return formData;
}

用法:

$.ajax({
   url: '/myurl'
   data: getFormData($('#myForm'),['FirstName','LastName','FavoriteColor']),
   type: 'POST'
  });

传入的数组应该是要发送的字段的名称属性(您也可以将其设为 id,或者其他任何东西,我只是认为您已经设置了 name 属性。