Zar*_*rif 2 asp.net ajax asp.net-mvc jquery razor
当按下按钮时,我似乎无法完成将字符串传递给控制器的这个非常简单的任务。接收到的数据始终为空。有人能告诉我我做错了什么吗?
形式:
<form>
<div class="form-group">
<label for="ProcessName" class="control-control">Process Name</label>
<input id="ProcessName" class="form-control" placeholder="Choose process name">
<small id="subtitle" class="form-text text-muted">Text under input field.</small>
</div>
<button type="submit" class="btn btn-primary" id="addElement">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
Javascript:
$(function () {
$("#addElement").click(function () {
var processName = $("#ProcessName").val();
// I've tried this method
$.post('@Url.Action("AddProcessName")', processName, function (data, status) {
alert(data)
});
// And also this one, but both of them don't work.
// I did not try them at the same time, of course
$.ajax({
type: "POST",
url: '@Url.Action("AddProcessName")',
data: processName,
dataType: 'text',
success: function (response) {
alert(response)
};
});
});
});
Run Code Online (Sandbox Code Playgroud)
服务器端:
[HttpPost]
public IActionResult AddProcessName(string data)
{
pm.ID = 1;
pm.Name = data; // I put a breakpoint here to check the value of 'data'
return Content(pm.Name);
}
Run Code Online (Sandbox Code Playgroud)
你告诉你的 Action 期待一个名为 的变量data,但你没有发送它。您需要将datajQuery AJAX 请求的属性更改为:
data: { data: processName },
Run Code Online (Sandbox Code Playgroud)
我还建议您从 Action 返回 JSON,因为由于空格可能会或可能不会被解释的方式,纯文本充其量可能是片状的。尝试这个:
data: { data: processName },
Run Code Online (Sandbox Code Playgroud)
$("#addElement").click(function () {
$.ajax({
type: "POST",
url: '@Url.Action("AddProcessName")',
data: {
data: $("#ProcessName").val()
},
dataType: 'json',
success: function(response) {
// use console.log for debugging, and access the property of the deserialised object
console.log(response.Name);
};
});
});
Run Code Online (Sandbox Code Playgroud)