gpt4 book ai didi

javascript - AJAX 发布数据到达 ASP.NET Core 2.1.1 Controller 时为空

转载 作者:行者123 更新时间:2023-11-29 20:51:03 25 4
gpt4 key购买 nike

我在将 razor 页面中的 java 脚本的值发布到 Controller 时遇到问题。 - 收到的值始终为空。

我看到有人问过类似的问题,但一直找不到正确的解决方案。

我在 Controller 中遇到了一个断点,(因此路由没问题)但是传递的参数值始终为 null,并且不是 java 脚本中最敏锐的,我想从你们那里得到一些提示。

我基本上有下面的 java 脚本:

 var clickButton = function (buttonId) {
$.ajax({
type: "POST",
async: false,
cache: false,
crossDomain: false,
contentType: "application/json; charset=utf-8",
url: "v1/buttons",
dataType: "json",
data: '{ buttonId:'+JSON.stringify( "buttonId" ) + '}',
success: function (result) {
//console.log("clickButton OK => " + result);
}, //success: function (result) {
timeout: 500 // 0.5 sec.
}); //$.ajax({
}//var clickButton = function(buttonNo) {

还有下面的 C# Controller 代码:

[Route( "v1/[controller]" )]
public class ButtonsController : Controller
{
...
[HttpPost]
public IActionResult OnButtonClicked( string buttonId )
{
// buttonId = null !!!
...

我在将 bool 值传递给另一个 Controller 时遇到了类似的问题。其中 bool 始终为 false.. 即默认值。我想知道这是否是一个安全问题,不允许帖子包含数据,当用户未经授权时...

最佳答案

问题出在 JSON 中,我通过这个小改动获得了值,但它隐藏得很好。

 var clickButton = function (buttonNo) {
console.log("clicked: " + buttonNo);
$.ajax({
type: "POST",
url: "v1/buttons/",
dataType: "json",
data: { "buttonId": buttonNo }, // < === this is where the problem was !!
success: function (result) {
}, //success: function (result) {
}); //$.ajax({
}//var clickButton = function(buttonNo) {

我已将 Controller 更改为接收一个字符串来标识按钮。现在看起来像这样:

[Route( "v1/[controller]" )]
public class ButtonsController : Controller
{
...
[HttpPost]
public IActionResult PostButtonClick( string buttonId ) {
// buttonId now has a value !!!
}
}

关于javascript - AJAX 发布数据到达 ASP.NET Core 2.1.1 Controller 时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51872233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com