2012-06-26 18 views
0

當前嘗試向我的計算機上的一個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工作)

感謝

回答

0

對於任何查看此問題的人來說,這個問題最終成爲IIS Express在本地計算機上使用的端口。當我通過80端口路由時,一切正常。

0
  1. 你確定藍疊使用相同的主機IP(10.0.2.2)作爲模擬器?我不熟悉它,所以我不確定那是什麼答案。

  2. jQuery的希望數據是一個字符串,請嘗試:

    data: JSON.stringify({'EncryptedPassword':'1234','UserName':'test','DeviceToken':'d234'}); 
    

    和好措施,在你的Ajax設置中添加

    contentType: 'application/json', 
    

+0

如果我轉到BlueStacks中的瀏覽器並導航到http://10.0.2.2,我能夠成功擊中我的本地IIS服務器。我試着改變我的請求,但是我仍然收到「錯誤」狀態文本。感謝您的建議。 –

+0

logcat是否產生任何日誌消息? –

+0

當我使用$ .ajax函數時,沒有任何內容輸出到Logcat中。有趣的是,如果我構建自己的XHR並嘗試違反本地IIS Express實例,則我輸出到Logcat中的響應代碼是400的狀態代碼。但是,如果使用XHR與實際服務器進行比較,則一切都會成功。 –

相關問題