为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 AJAX 将 JSON 数据发送到 ASP Server?

如何使用 AJAX 将 JSON 数据发送到 ASP Server?

交互式爱情 2023-11-02 17:24:06
我有一个使用 ASP.NET 的网站,需要从 CloudKit 检索一些数据。我正在使用 CloudKit JS,从 CloudKit 检索记录并使用 C# 将数据从 JavaScript 发送到服务器。我可以使用 将检索到的记录的 JSON 对象转换为字符串JSON.stringify(record);,但无法使用 AJAX 将其发送到服务器。这是我使用 AJAX 发送数据的代码:function afterRecordLoaded(record) {            var decodedRecord = JSON.stringify(record);            var xmlhttp = new XMLHttpRequest();            xmlhttp.open("POST", "/receive?type=specific&" + "data=" + decodedRecord, true);            xmlhttp.setRequestHeader("Content-Type", "application/json");            xmlhttp.send();}afterRecordLoaded(record);当我进入浏览器开发工具中的控制台时,手动完成时可以正确执行请求,但是当 AJAX 执行时,它会收到 HTTP 错误 400。换句话说,我可以在键入 URL 时执行请求(具有正确的参数)进入地址栏,但是当AJAX使用相同的URL(具有相同的参数)时,它不起作用并返回HTTP错误400。以下是接收请求的页面的 C# 代码:    var token = antiforgery.GetAndStoreTokens(HttpContext).RequestToken;    var type = Request.Query["type"];    var data = Request.Query["data"];    if (type == "specific")    {        if (data != "")        {            PostProcessor.processPostData(data);        }        else        {            Response.StatusCode = 400;        }    }在进行简单的 Google 搜索时,我可以看到其他人也遇到了这个问题,为了解决这个问题,他们使用了防伪令牌。我不确定如果需要的话如何实施防伪令牌。如果有人有解决方案来消除 HTTP 错误 400,或者实现防伪令牌来消除错误,那就太好了。抱歉,如果这个问题到处都是,或者非常明显,因为我是 ASP 的初学者。谢谢。
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

可能当您在控制台发送时,数据不为空。当代码中的 XHR 数据为空时,请求将输入 asp.net 的 else expression Response.StatusCode = 400;。


我猜你的代码中可能JSON.stringify(record)有一些错误,什么也不返回。


此外,当您使用 post 请求时,数据(真正的有效负载)不应该像您的样式一样作为查询参数发送,它应该像这样在有效负载中。


var decodedRecord = JSON.stringify(record);

var xmlhttp = new XMLHttpRequest();

xmlhttp.open("POST", "/receive?type=specific", true);

xmlhttp.setRequestHeader("Content-Type", "application/json");

xmlhttp.send(decodedRecord );


查看完整回答
反对 回复 2023-11-02
?
BIG阳

TA贡献1859条经验 获得超6个赞

解决方案非常简单。我使用的是 GET 请求的格式,而不是 POST 请求的格式。我所要做的就是更改xmlhttp.open("POST", "/receive?type=specific&" + "data=" + decodedRecord, true);xmlhttp.open("GET", "/receive?type=specific&" + "data=" + decodedRecord, true);.



查看完整回答
反对 回复 2023-11-02
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信