在 C# ASP.NET Core MVC 中使用 AJAX 将数据从视图传递到控制器
Pass data from view to controller using AJAX in C# ASP.NET Core MVC
我尝试查看类似问题的答案,其中 none 对我的代码有效。我尝试了很多不同的东西,它应该做的就是 post 全名,然后将其显示回视图中。
查看代码:
<script type="text/javascript">
$(document).ready(function () {<script type="text/javascript">
$(document).ready(function () {
$('#buttonDemo2').click(function () {
var fullName = $('#fullName').val();
var payload = {fn : fullName};
$.ajax({
type: 'POST',
url: '/demo/demo2/',
contentType: 'application/json',
data: JSON.stringify(payLoad),
success: function (result) {
$('#result2').html(result);
}
});
});
</script>
<fieldset>
<legend>Demo 2</legend>
Full Name <input type="text" id="fullName" />
<input type="button" value="Demo 2" id="buttonDemo2" />
<br />
<span id="result2"></span>
</fieldset>
控制器代码:
[HttpPost]
public IActionResult Demo2(string fullName)
{
return new JsonResult("Hello " + fullName);
}
首先,ajax给action传递字符串时,要确保接收到的参数名与传入的参数名一致。
因此,您应该将 var payload = {fn : fullName};
更改为 var payload = {fullName: fullName};
,或将 public IActionResult Demo2(string fullName)
更改为 public IActionResult Demo2(string fn)
。
然后,因为你传递的只是一个字符串,而不是一个对象参数,所以你不需要使用JSON.stringify
,并删除contentType: 'application/json'
。
详细代码如下:
<script type="text/javascript">
$(document).ready(function () {
$('#buttonDemo2').click(function () {
var fullName = $('#fullName').val();
var payload = { fullName: fullName }; // change name
$.ajax({
type: 'POST',
url: '/demo/demo2/',
// contentType: 'application/json', // remove this line
data: payload, //remove JSON.stringify
success: function (result) {
$('#result2').html(result);
}
});
});
});
</script>
<fieldset>
<legend>Demo 2</legend>
Full Name <input type="text" id="fullName" />
<input type="button" value="Demo 2" id="buttonDemo2" />
<br />
<span id="result2"></span>
</fieldset>
控制器:
[HttpPost]
public IActionResult Demo2(string fullName)
{
return new JsonResult("Hello " + fullName);
}
测试结果如下:
我尝试查看类似问题的答案,其中 none 对我的代码有效。我尝试了很多不同的东西,它应该做的就是 post 全名,然后将其显示回视图中。 查看代码:
<script type="text/javascript">
$(document).ready(function () {<script type="text/javascript">
$(document).ready(function () {
$('#buttonDemo2').click(function () {
var fullName = $('#fullName').val();
var payload = {fn : fullName};
$.ajax({
type: 'POST',
url: '/demo/demo2/',
contentType: 'application/json',
data: JSON.stringify(payLoad),
success: function (result) {
$('#result2').html(result);
}
});
});
</script>
<fieldset>
<legend>Demo 2</legend>
Full Name <input type="text" id="fullName" />
<input type="button" value="Demo 2" id="buttonDemo2" />
<br />
<span id="result2"></span>
</fieldset>
控制器代码:
[HttpPost]
public IActionResult Demo2(string fullName)
{
return new JsonResult("Hello " + fullName);
}
首先,ajax给action传递字符串时,要确保接收到的参数名与传入的参数名一致。
因此,您应该将 var payload = {fn : fullName};
更改为 var payload = {fullName: fullName};
,或将 public IActionResult Demo2(string fullName)
更改为 public IActionResult Demo2(string fn)
。
然后,因为你传递的只是一个字符串,而不是一个对象参数,所以你不需要使用JSON.stringify
,并删除contentType: 'application/json'
。
详细代码如下:
<script type="text/javascript">
$(document).ready(function () {
$('#buttonDemo2').click(function () {
var fullName = $('#fullName').val();
var payload = { fullName: fullName }; // change name
$.ajax({
type: 'POST',
url: '/demo/demo2/',
// contentType: 'application/json', // remove this line
data: payload, //remove JSON.stringify
success: function (result) {
$('#result2').html(result);
}
});
});
});
</script>
<fieldset>
<legend>Demo 2</legend>
Full Name <input type="text" id="fullName" />
<input type="button" value="Demo 2" id="buttonDemo2" />
<br />
<span id="result2"></span>
</fieldset>
控制器:
[HttpPost]
public IActionResult Demo2(string fullName)
{
return new JsonResult("Hello " + fullName);
}
测试结果如下: