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

我有一个使用 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 的初学者。谢谢。


交互式爱情
浏览 103回答 2
2回答

UYOU

可能当您在控制台发送时,数据不为空。当代码中的 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 );

BIG阳

解决方案非常简单。我使用的是 GET 请求的格式,而不是 POST 请求的格式。我所要做的就是更改xmlhttp.open("POST", "/receive?type=specific&" + "data=" + decodedRecord, true);为xmlhttp.open("GET", "/receive?type=specific&" + "data=" + decodedRecord, true);.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript