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

时间:2019-05-22 17:20:14

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

我按XMLHttpRequestcontroller发布数据。我只传递了值string的{​​{1}}。当我与提琴手检查请求时,一切正常。有"1" JSON。请求连接控制器中的方法,但是rara=1rara

下面来自js的代码:

null

来自控制器的代码:

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 }));
}

我提到我曾尝试使用public void InterruptFirstThreadFastConditionService(string rara) { var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(rara); _fastConditionServiceHelper.setStopFirstThread(interruptionType); } HttpPostHttpGet标签,但没有用。更重要的是,我在.net框架中尝试了同样的方法,并且效果很好。 .net核心中不一样。

请看图片。有值为1的rara,但未绑定到方法的参数。

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

您可以像这样在控制器中使用它:

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