如何使用 AJAX 将 JSON 数据发送到 ASP 服务器?
Posted
技术标签:
【中文标题】如何使用 AJAX 将 JSON 数据发送到 ASP 服务器?【英文标题】:How can I send JSON data to ASP Server using AJAX? 【发布时间】:2021-03-22 11:15:25 【问题描述】:我有一个使用 ASP.NET 的网站,需要从 CloudKit 检索一些数据。我正在使用 CloudKit JS,我正在从 CloudKit 检索记录并使用 C# 从我的 javascript 将数据发送到服务器。我可以使用JSON.stringify(record);
将检索到的记录的 JSON 对象转换为字符串,但我无法使用 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 的初学者。谢谢。
【问题讨论】:
【参考方案1】:可能是当你在控制台发送时,数据不为空。当代码中的 XHR 数据为空时,请求然后输入 asp.net 的 else 表达式 Response.StatusCode = 400;
。
我猜你的代码JSON.stringify(record)
可能有一些错误,什么都不返回。
此外,当您使用发布请求时,数据(真正的有效负载)不应像您的样式一样作为查询参数发送,它应该像这样在有效负载中。
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 );
【讨论】:
数据变量不为空。当我手动访问该 URL 时,我能够得到我需要的东西。当它由 AJAX 完成时,我无法做到。 当你手动做的时候,我想你还是在控制台中使用xmlhttprequest,或者你找不到问题。只需将上面的代码粘贴到控制台中,(首先在控制台中添加记录数据)看看会发生什么【参考方案2】:解决方案非常简单。我使用的是 GET 请求的格式,而不是 POST 请求。我所要做的就是将xmlhttp.open("POST", "/receive?type=specific&" + "data=" + decodedRecord, true);
更改为xmlhttp.open("GET", "/receive?type=specific&" + "data=" + decodedRecord, true);
。
【讨论】:
以上是关于如何使用 AJAX 将 JSON 数据发送到 ASP 服务器?的主要内容,如果未能解决你的问题,请参考以下文章
我在使用 ajax 将 json 数据发送到控制器时遇到问题
使用 Ajax POST 请求将图像和 JSON 数据发送到服务器?
使用Ajax(无表单)将POST数据以JSON格式发送到Symfony2 Controller