我正在尝试使用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发送表单,我得到“请求”为空,没有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;
});
它只是调用错误函数“Some Error Occured!”
答案 0 :(得分:0)
使用.serialize()
未序列化提交按钮。来自jquery documentation
注意:只有“成功控件”被序列化为字符串。没有 由于表单未提交,因此提交按钮值已序列化 使用按钮。
在任何情况下,ticketDetail
也将为空,因为您已经为控件命名,并且您的html包含所有这些重复ID
修改强>
要回发相关提交按钮的值,请修改脚本以处理按钮的.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({
.....
});
});