2012-06-26 19 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与实际服务器进行比较,则一切都会成功。 –

相关问题