这是我服务器中的控制器:
public class ChatController : ApiController
{
[HttpGet]
public HttpResponseMessage HelloWorld()
{
string result = "<h1>Hello world! Time is: " + DateTime.Now + "</h1>";
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent(result, Encoding.UTF8, "text/plain");
return resp;
}
}
这是我的JavaScript代码:
$.ajax({
type: "GET",
url: "http://localhost:8080/api/Chat/HelloWorld",
cache: false,
contentType: "text/plain",
success: function (data) {
alert(data);
},
error: function (error) {
alert('error');
}
});
它始终显示错误&#39;。怎么了? 顺便说一句,当我在浏览器的地址栏中复制网址时,浏览器可以显示来自网络API的正确消息。
答案 0 :(得分:1)
终于解决了。这是因为跨域。
解决方案:在WebAPI控制器的响应头中添加“Access-Control-Allow-Origin:*”。
[HttpGet]
public HttpResponseMessage HelloWorld()
{
string result = "Hello world! Time is: " + DateTime.Now + "";
var resp = new HttpResponseMessage(HttpStatusCode.OK);
// add this line to allow cross domain
resp.Headers.Add("Access-Control-Allow-Origin", "*");
resp.Content = new StringContent(result, Encoding.UTF8, "text/plain");
return resp;
}
有关详细信息,请参阅以下帖子:
ajax problem - 200 OK in firebug but red message with no response body
答案 1 :(得分:0)
尝试使用以下代码在控制台中记录错误:
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.statusText);
}
如果无法使错误记录生效,请参阅here。