我正在使用jQuery 3.4.1版。服务器端API不会引发任何错误,但是jQuery回调总是会出错。我的POST请求应该更改什么?谢谢!
$.ajax({
url: 'http://localhost:58373/FileAddAPI/GetFileToken',
type: 'POST',
dataType: 'text',
cache: false,
crossDomain: true,
xhrFields: { withCredentials: true },
data: $('#sToken').val(),
success: function (data, textStatus, jqXHR) {
alert(data);
$("#log").append("Success</br>");
},
error: function (xhr, textStatus, errorThrown) {
$("#log").append("Error " + xhr.responseText + "</br>");
}
});
[HttpPost]
[AllowAnonymous]
public IActionResult GetFileToken()
{
string token = "testtoken";
return Ok(token);
}
我在提琴手下面看到。
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/plain; charset=utf-8
Server: Kestrel
X-SourceFiles: =?UTF-8?B?QzpcZGV2XFNob3dDYXNlXEFwdGl0dWRlIEhvc3RlZFxTb2Z0d2FyZSBGYWN0b3J5XEZpbGVVcGxvYWRcRmlsZVVwbG9hZFxGaWxlVXBsb2FkQVBJXFN0YXJ0U2Vzc2lvbg==?=
X-Powered-By: ASP.NET
Date: Thu, 03 Oct 2019 17:53:15 GMT
410
testtoken
0
答案 0 :(得分:1)
我遇到了类似的问题,并添加了ajax选项contentType
解决了该问题。
您可以指定ajax期望的返回类型。
$.ajax({
url: "url",
type: "POST",
contentType: "application/json", <---- this option
dataType: "text" <---- expected response type
...
答案 1 :(得分:1)
contentType:==>是您要发送的数据类型,因此为application / json; charset = utf-8是一种常见的格式,就像application / x-www-form-urlencoded一样; charset = UTF-8,这是默认值。
dataType:
是您期望从服务器返回的内容:json,html,文本等。jQuery将使用它来确定如何填充成功函数的参数。
答案 2 :(得分:1)
jQuery是回调函数,总是会出错。
跨域请求和dataType:“ jsonp”请求不支持同步操作。
有两种简单的解决方法:
1。您可以如下添加async: false
:
$.ajax({
url: 'http://localhost:58373/FileAddAPI/GetFileToken',
type: 'POST',
dataType: "text",
async: false,
cache: false,
crossDomain: true,
xhrFields: { withCredentials: true },
data: $('#sToken').val(),
...
});
2。或者,如果您不发送跨域请求,则可以添加正确的content-type
并评论crossDomain
,如下所示:
$.ajax({
url: 'http://localhost:58373/FileAddAPI/GetFileToken',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
dataType: "text",
cache: false,
//crossDomain: true,
xhrFields: { withCredentials: true },
data: $('#sToken').val(),
...
});