【问题标题】:Cannot send parameters in asp.net mvc 4 using ajax无法使用 ajax 在 asp.net mvc 4 中发送参数
【发布时间】:2014-09-05 01:04:59
【问题描述】:

我正在尝试使用 ajax 将表单数据发送到操作方法,但它不起作用,如果我尝试不使用 ajax,那么它可以完美地工作。我已经搜索了互联网,但找不到任何合适的解决方案,我正在分享我的代码,请指导我。

HTML:

<form action="/sp/operate?id=38" id="PartialFormSubmit" method="post">    
<table id="MainTablePartial">
   <thead>
       <tr>
         <th style="width: 8px;">
            <input type="checkbox" id="selectAll" />
         </th>
         <th>
            Part No
         </th>
         <th>
           MFG
         </th>
       </tr>
   </thead>
   <tbody>
     <tr>
       <td>
          <input checked type="checkbox" name="CheckBox" class="checkboxes" />
       </td>
       <td>
        <input type="text" name="PartNumber" id="PartNumber0" readonly value="2005137-2" style="width:180px;" />
       </td>
     </tr>
     <tr>
       <td>
          <input checked type="checkbox" name="CheckBox" class="checkboxes" />
       </td>
       <td>
        <input type="text" name="PartNumber" id="PartNumber0" readonly value="2005137-2" style="width:180px;" />
       </td>
     </tr>
     <tr>
       <td>
          <input checked type="checkbox" name="CheckBox" class="checkboxes" />
       </td>
       <td>
        <input type="text" name="PartNumber" id="PartNumber0" readonly value="2005137-2" style="width:180px;" />
       </td>
     </tr>
</tbody>
</table>
<button type="submit" name="request" value="Quote" class="btn yellow">Send Quote</button>
<button type="submit" name="request" style="margin-left:220px;" value="NoStock" class="btn red box">No Stock</button>
</form>

jQuery:

$("#PartialFormSubmit").on('submit', function (e) {
    e.preventDefault();
    var dd = $(this).serialize();
    $.ajax({
        type: "Post",
        url: $(this).attr("action"),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        cache: false,
        data: JSON.stringify(dd),
        success: function (data) {            
            alert(data);
        },
        error: function (jqr, errorStatus, errorThrow) {
            alert("Some Error Occurred! ");
        }
    });
    return false;
});

MVC 动作:

[Route("operate")]
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult PerformOperation(int? id, List<TicketDetail> ticketDetail, string request)
{
   return Json("message",JsonRequestBehavior.AllowGet);
}

如果我通过 ajax 发送表单,我将“请求”设为 null,而没有 ajax 它正在工作。请指导我

====================

更新:

试过斯蒂芬码

$('button[type="submit"]').on('click', function (e) {
    e.preventDefault();
    var dd = $(this).serializeArray();
    dd.push({ request: $(this).val() })
    $.ajax({
        type: "Post",
        url: $(this).attr("action"),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        cache: false,
        data: JSON.stringify(dd),
        success: function (data) {
            alert(data);
        },
        error: function (jqr, errorStatus, errorThrow) {
            alert("Some Error Occurred! ");
        }
    });
    return false;
});

它只是调用错误函数“发生了一些错误!”

【问题讨论】:

    标签: jquery asp.net ajax asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    提交按钮不使用.serialize() 序列化。来自jquery documentation

    注意:只有“成功的控件”被序列化为字符串。不 由于未提交表单,提交按钮值已序列化 使用按钮。

    在任何情况下,ticketDetail 也将为 null,因为您命名控件的方式以及所有这些重复 ID 的 html 无效

    编辑

    要回发相关提交按钮的值,请修改您的脚本以处理按钮的.click() 事件

    $('button[type="submit"]').click(function(e) {
      e.preventDefault();
      var dd = $(this).serializeArray(); // serialize the form values
      dd.push({ request: $(this).val() }) // add the value of the button that was clicked
      $.ajax({
        .....
      });
    });
    

    【讨论】:

    • 附加事件处理程序以单击提交按钮,使用带有 name="request" 的隐藏输入并在调用 serialize 之前设置其值。
    • 您可以使用var dd = $(this).serializeArray();dd.push({ request: someValue});,但您如何知道要发送哪个按钮值?你真的需要处理按钮.click() 事件而不是表单的.submit() 事件
    • @StephenMuecke 如果我遵循每个按钮单击方法,我如何每次提交不同的表单?
    • 我会尽快编辑答案,但正如我所指出的,使用您用于创建视图的代码,它不会以任何方式工作
    • @StephenMuecke 我该如何解决这个问题?我在过去 5 个小时里寻找并尝试了不同的方法:(
    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多