目前正在尝试从我机器上的 android VM (Bluestacks) 向 IIS Express 托管的 MVC 4 Web API 端点发出 ajax 发布请求。以下是我正在尝试但无法开始工作的代码片段:
$.ajax({
type: "POST",
url: "http://10.0.2.2:28434/api/devices",
data: {'EncryptedPassword':'1234','UserName':'test','DeviceToken':'d234'}
}).always(function( data, textStatus, jqXHR ) {
alert( textStatus );
});
每当我运行这个请求时,我总是会得到一个“错误”的文本状态。经过数小时尝试不同的事情后,我将 End Point 推送到了一个实际的服务器,并且如果我手动构建一个 XMLHttpRequest,则能够在 PhoneGap 中实际获得响应,如下所示:
var request = new XMLHttpRequest();
request.open("POST", "http://172.16.100.42/MobileRewards/api/devices", true);
request.onreadystatechange = function(){//Call a function when the state changes.
console.log("state = " + request.readyState);
console.log("status = " + request.status);
if (request.readyState == 4) {
if (request.status == 200 || request.status == 0) {
console.log("*" + request.responseText + "*");
}
}
}
request.send("{EncryptedPassword:1234,UserName:test,DeviceToken:d234}");
不幸的是,如果我尝试将 $.ajax() 用于上面代码段中的同一端点,我仍然会得到一个状态文本,上面写着“错误”,下面是该代码段供参考:
$.ajax({
type: "POST",
url: "http://172.16.100.42/MobileRewards/api/devices",
data: {'EncryptedPassword':'1234','UserName':'test','DeviceToken':'d234'}
}).always(function( data, textStatus, jqXHR ) {
alert( textStatus );
});
所以真的,这里有几个问题。
1) 为什么当它通过 IIS Express 托管在运行 Android VM 的同一台机器上时,我无法获得任何 ajax 调用(post 或 get)来成功到达我的端点?
2)当我的端点托管在实际服务器上,通过 IIS 并通过端口 80 提供服务时,为什么在我使用 jquery 的 ajax 调用时不能成功发布请求?(即使我可以通过手动创建 XMLHttpRequest 来让它工作)
谢谢