我無法向控制器發送 AJAX 發布請求。以下代碼有效:
var path = $(this).prop("value");
var token = $('[name=__RequestVerificationToken]').val();
var headers = {};
headers["__RequestVerificationToken"] = token;
var ids = $("#ids").val();
var formData = new FormData();
formData.append('ids', ids);
$.ajax({
url: path,
type: "POST",
cache: false,
headers: headers,
data: formData,
async: false,
processData: false,
contentType: false,
success: function (result) {
document.write(result);
document.close();
console.log("YES");
},
error: function () {
alert("Error.");
}
});
這是控制器方法:
[AjaxOnly]
[HttpPost]
[ValidateAntiForgeryToken]
[OutputCache(NoStore = true, Location = OutputCacheLocation.None)]
public ActionResult MyMethod(string aString)
對 Controller 的呼叫作業正常,但正如aStringController-Function 引數中所預期的那樣,它是 null。
我真正想做的不是formData ($("#myForm").serialize();)在 AJAX 帖子的資料欄位中發布,而是在hiddenField 中發布:
var aString = $("#ids").val();
因此,當我將aString變數放在 Ajax 呼叫的資料欄位中而不是formData對我的函式的呼叫不再起作用時,我得到500錯誤。
任何人都可以幫助如何發布這個hiddenfield值而不是formData?
我的表格:
@{
ViewBag.Title = "MyForm";
@model MyFormModel
}
@using (Html.BeginForm("MyForm", "MyController", FormMethod.Post, new { id = "MyForm" }))
{
<div class="tab-content" id="tabContent">
content
</div>
@Html.Partial("_MyFormPopup")
部分的:
@using (Html.BeginForm("MyMethod", "MyController", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="modal fade">
content
</div>
@Html.Hidden("ids")
控制器代碼:
[AjaxOnly]
[HttpPost]
[ValidateAntiForgeryToken]
[OutputCache(NoStore = true, Location = OutputCacheLocation.None)]
public ActionResult MyMethod(string ids)
{
string[] IdsFunktions = ids.Split(new string[] { ";" },
....
return RedirectToAction("MyForm");
}
uj5u.com熱心網友回復:
因此,為了讓您的代碼正常作業,您需要正確命名formData變數,這里有兩個變體:
如果你想aString在你的控制器上有一個變數,那么你的 AJAX 郵政編碼應該像這樣發布:
var formData = new FormData();
formData.append('aString', $("#ids").val());
$.ajax({
url: path,
type: "POST",
cache: false,
headers: headers,
data: formData,
async: false,
success: function (result) {
document.write(result);
document.close();
},
error: function () {
alert("Error.");
}
});
另一種解決方案是,如果您想通過使用發布所有表單欄位資料,data: $("#myForm").serialize()您必須更改控制器參考變數名稱并通過表單名稱參考每個欄位,例如,如果您只有一個隱藏欄位,則:
[AjaxOnly]
[HttpPost]
[ValidateAntiForgeryToken]
[OutputCache(NoStore = true, Location = OutputCacheLocation.None)]
public ActionResult MyMethod(string ids, string fieldNameOne, string fieldNameTwo, etc...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516026.html
上一篇:使用ajax將引數從視圖傳遞給控制器??,控制器將新的eloquent傳遞給視圖
下一篇:遍歷jsonapi字典欄位
