我尝试使用以下代码从web api获取值,目前是硬编码的。 但它会导致“错误”。部分100%的时间,我不知道为什么。 欢迎任何帮助。
function SignIn() {
$.ajax({
type: 'GET',
url: 'http://localhost:1200/Api/Values/3',
dataType: "jsonp",
crossDomain: true,
xhrFields: {
'withCredentials': true
},
headers: {
'Access-Control-Allow-Origin': '*'
},
success: function (data) {
debugger;
alert(data);
},
error: function (xhr, ajaxOptions) {
debugger;
alert(xhr.status);
alert(ajaxOptions);
}
});
}
服务器端:
[EnableCors("Access-Control-Allow-Origin", "*", "*")]
public string Get(int id)
{
return "{Name: 'Foo', Id: '1234',Rank: 7}";
}
Web.Config(服务器):
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
答案 0 :(得分:0)
使用jsonp
,您必须定义回调函数。小心,JSON想要键和值的双引号:
[EnableCors("Access-Control-Allow-Origin", "*", "*")]
public string Get(int id)
{
return "callback({\"Name\": \"Foo\", \"Id\": \"1234\",\"Rank\": 7})";
}
现在是Ajax:
function SignIn() {
$.ajax({
type: 'GET',
url: 'http://localhost:1200/Api/Values/3',
dataType: "jsonp",
jsonpCallback: "callback",
xhrFields: {
'withCredentials': true
},
success: function (data) {
debugger;
alert(data);
},
error: function (xhr, ajaxOptions) {
debugger;
alert(xhr.status);
alert(ajaxOptions);
}
});
}
或者,您只需将jsonp
更改为json
dataType
即可试用您的代码。