通过 XMLHttpReques 发布数据没有 return json 值
Posting data by XMLHttpReques does not return json value
我post数据由XMLHttpRequest
到controller
。我只传递了值 "1"
的 string
。当我用提琴手检查请求时,一切正常。有JSON
rara=1
。请求连接到控制器中的方法,但是 rara
是 null
.
以下来自 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 }));
}
来自控制器的代码:
public void InterruptFirstThreadFastConditionService(string rara)
{
var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(rara);
_fastConditionServiceHelper.setStopFirstThread(interruptionType);
}
我提到我尝试使用 HttpPost
、HttpGet
、AllowAnnonymous
标签,但它不起作用。更重要的是,我在 .net 框架中尝试了同样的方法并且它起作用了。
这在 .net 核心中不起作用。
请看图。有值为 1 的 rara,但它未绑定到方法的参数。
您正在从 JavaScript 发送一个对象,因此您应该在服务器端创建一个视图模型 class,如下所示:
public class MyViewModel
{
public string Rara { get; set; }
}
你可以像这样在控制器中使用它:
public void InterruptFirstThreadFastConditionService([FromBody] MyViewModel model)
{
var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(model.Rara);
_fastConditionServiceHelper.setStopFirstThread(interruptionType);
}
我post数据由XMLHttpRequest
到controller
。我只传递了值 "1"
的 string
。当我用提琴手检查请求时,一切正常。有JSON
rara=1
。请求连接到控制器中的方法,但是 rara
是 null
.
以下来自 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 }));
}
来自控制器的代码:
public void InterruptFirstThreadFastConditionService(string rara)
{
var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(rara);
_fastConditionServiceHelper.setStopFirstThread(interruptionType);
}
我提到我尝试使用 HttpPost
、HttpGet
、AllowAnnonymous
标签,但它不起作用。更重要的是,我在 .net 框架中尝试了同样的方法并且它起作用了。
这在 .net 核心中不起作用。
请看图。有值为 1 的 rara,但它未绑定到方法的参数。
您正在从 JavaScript 发送一个对象,因此您应该在服务器端创建一个视图模型 class,如下所示:
public class MyViewModel
{
public string Rara { get; set; }
}
你可以像这样在控制器中使用它:
public void InterruptFirstThreadFastConditionService([FromBody] MyViewModel model)
{
var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(model.Rara);
_fastConditionServiceHelper.setStopFirstThread(interruptionType);
}