我有一个Web API 2.0操作,它执行以下操作:
[System.Web.Http.Route("api/wdretrievedata")]
[System.Web.Http.HttpGet]
public IHttpActionResult RetrieveUserData(string email)
{
var user = new WDUserData();
user.FirstName = "FirstName";
user.LastName="LastName";
user.PhoneNumber="PhoneNumber";
return Ok(user);
}
如您所见,此处没有错误。我在Postman中运行它并获得结果(为了安全性省略了某些数据):
我通过$ .ajax在我的代码中运行它,如下所示:
$.ajax({
url: 'http://localhost:49352/api/wdretrievedata?email=myemail@gmail.com',
type: "GET",
async: true,
success: function (data) {
//never goes here
},
error: function (err) {
//always goes here
//err.statusText says 'error' and nothing else
alert(err.statusText);
}
});
API调用始终在错误部分返回,并且不包含任何数据。如何通过像Postman这样的$ .ajax调用让我的API调用工作?感谢
如果这有帮助,我已将我的api部署到我的网络服务器上。特洛伊这个网址,看看我得到了什么:
答案 0 :(得分:1)
在使用@BoundForGlory进行一些研究后,发现了Cross-Origin Requests的问题。
其中一个选项是添加自定义标头Access-Control-Allow-Origin
以允许CORS
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
答案 1 :(得分:-1)
尝试:
[System.Web.Http.Route("api/wdretrievedata")]
[System.Web.Http.HttpGet]
public async Task<IHttpActionResult> RetrieveUserData(string email)
{
var user = await new WDUserData();
user.FirstName = "FirstName";
user.LastName="LastName";
user.PhoneNumber="PhoneNumber";
return Ok(user);
}