當前嘗試向我的計算機上的一個android VM(Bluestacks)發送一個ajax post請求到一個IIS Express託管的MVC 4 Web API端點。下面是代碼,我想的片段,並不能得到工作:
$.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);
});
每當我跑這個要求,我總是回來的「錯誤」一個textStatus。經過嘗試不同的事物小時,我把我的終點實際的服務器,並能夠實際得到的反應早在PhoneGap的,如果我建立了一個XMLHttpRequest的手,就像這樣:
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({
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)爲什麼在Android VM運行的同一臺機器上通過IIS Express託管時,無法通過任何ajax調用(發佈或獲取)來成功點擊我的終端? 2)當我的端點託管在實際的服務器上,通過IIS並通過端口80進行服務時,爲什麼當我使用jQuery的ajax調用時,我無法獲得發佈請求以獲得成功? (即使我可以得到它通過手動創建一個XMLHttpRequest工作)
感謝
如果我轉到BlueStacks中的瀏覽器並導航到http://10.0.2.2,我能夠成功擊中我的本地IIS服務器。我試着改變我的請求,但是我仍然收到「錯誤」狀態文本。感謝您的建議。 –
logcat是否產生任何日誌消息? –
當我使用$ .ajax函數時,沒有任何內容輸出到Logcat中。有趣的是,如果我構建自己的XHR並嘗試違反本地IIS Express實例,則我輸出到Logcat中的響應代碼是400的狀態代碼。但是,如果使用XHR與實際服務器進行比較,則一切都會成功。 –