javascript - 通过 XMLHttpReques 发布数据不返回 json 值

标签 javascript ajax asp.net-core xmlhttprequest asp.net-ajax

我通过 XMLHttpRequest 将数据发布到 Controller 。我仅传递值为 "1"string。当我用 fiddler 检查请求时,一切正常。有 JSON rara=1。请求连接到 Controller 中的方法,但raranull

以下js代码:

StopThreadHandlerBase.prototype.sendInterruption = function (number, path) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", path, false);
    xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    xhr.onreadystatechange = function () {
        if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
            var message = 'Thread Stopped';
            if (number === 3) {
                message = message + ', Asset sold';
            }

            if (number === 5) {
                message = message + ', Asset bought';
            }

            alert(message);
            window.location.href = "/WebApplication2/Home/NewOrder";
        }
        else {
            alert('Request failed.  Returned status of ' + xhr.status);
        }
    };
    xhr.send(JSON.stringify({ rara: number }));
}

来自 Controller 的代码:

public void InterruptFirstThreadFastConditionService(string rara)
{
  var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(rara);
  _fastConditionServiceHelper.setStopFirstThread(interruptionType);
}

我提到我尝试使用 HttpPostHttpGetAllowAnnonymous 标记,但它不起作用。更重要的是,我在.net框架中尝试了同样的方法并且它有效。 同样的情况在 .net core 中不起作用。

请看图片。存在值为 1 的 rara,但它未绑定(bind)到方法中的参数。

enter image description here

最佳答案

您正在从 JavaScript 发送一个对象,因此您应该在服务器端创建一个 View 模型类,如下所示:

public class MyViewModel
{
    public string Rara { get; set; }
}

您可以在 Controller 中使用它,如下所示:

public void InterruptFirstThreadFastConditionService([FromBody] MyViewModel model)
{
  var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(model.Rara);
  _fastConditionServiceHelper.setStopFirstThread(interruptionType);
}

关于javascript - 通过 XMLHttpReques 发布数据不返回 json 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261986/

相关文章:

c# - 根据需要验证正文中的不可为空属性 - AspNetCore 3.1

c# - 状态代码 405,不允许使用 PUT 和 DELETE 操作方法

javascript - AngularJs 将模型值+模型名称传递给 Controller ​​中的函数

javascript - 如何在 WordPress 中隐藏自定义控件?

javascript - 隐藏时如何打开组件 v-file-input?

PHP,未捕获类型错误 : Cannot read property 'length' of undefined

javascript - jQuery 使用 Ajax 用数据属性填充 div

javascript - 将 Google Maps API v3 搜索结果限制在某个国家/地区,同时偏向某个位置

javascript - 使用 ajax 和 javascript 显示和隐藏表单

c# - 多次注册同一服务的目的是什么?