我需要在舊版本的 .net Framework 上撰寫代碼,即 4.5.2。我遇到了一個問題,ajax 代碼向控制器發送了一個空請求。
這是表格,我需要檢查唯一的用戶全名:
<div class="register-card">
<h1>Register the new user</h1>
@using (Html.BeginForm("CreateUserAsync", "Home", FormMethod.Post))
{
<div>
@Html.Label("FullName", "Enter your full name")
<input type="text" id="FullName" name="FullName" pattern="^(\w\w )\s(\w )\s(\w )$" onblur="CheckAvailability()" required />
<span id="message" onclick="ClearMessage()"></span>
</div>
<p><input type="submit" value="Send" id="submit" /></p>
}
</div>
這是我檢查全名的js函式:
function CheckAvailability() {
var data = $("#FullName").val();
var param = data;
$.ajax({
type: "POST",
url: "/Home/CheckFullNameAsync",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: "String",
data: JSON.stringify(param),
success: function (response) {
var message = $("#message");
if (response) {
message.css("color", "red");
message.html("Full name is already exist");
$('#submit').attr('disabled', 'disabled');
}
else {
console.log(JSON.stringify(param));
message.css("color", "green");
message.html("Full name is available");
$('#submit').removeAttr('disabled');
}
}
});
};
function ClearMessage() {
$("#message").html("");
};
Js 函式將 FullName 傳遞給下一個控制器:
[HttpPost]
public async Task<JsonResult> CheckFullNameAsync([FromBody]string fullName)
{
var isValid = await _service.IsUserExistAsync(fullName);
return Json(isValid);
}
但控制器收到空值。我認為問題出在 Js 函式中,但我可以弄清楚我做錯了什么。
uj5u.com熱心網友回復:
不需要創建兩個變數
var data = $("#FullName").val();
var param = data;
只需創建
var param = $("#FullName").val();
嘗試這個
檢查此鏈接。 它很好地解釋了你的問題
$.ajax({
type: "POST",
url: "/Home/CheckFullNameAsync",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: 'json',
data:{"":param},
//data: { fullName: param },
success: function (response) {
var message = $("#message");
if (response) {
message.css("color", "red");
message.html("Full name is already exist");
$('#submit').attr('disabled', 'disabled');
}
else {
console.log(JSON.stringify(param));
message.css("color", "green");
message.html("Full name is available");
$('#submit').removeAttr('disabled');
}
}
});
或者這個也是
$.post('/Home/CheckFullNameAsync', { fullname: param},
function(returnedData){
console.log(returnedData);
}).fail(function(){
console.log("error");
});
uj5u.com熱心網友回復:
是什么dataType: "String"?那不是列出的選項。更具體地說,您發送的只是一個value但沒有key。因此服務器無法反序列化資料并確定fullName值的來源。
將型別更改為'json'并發送具有命名鍵值的物件:
dataType: "json",
data: { fullName: param },
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518665.html
標籤:javascriptC#阿贾克斯asp.net-mvc
