如何使用PhoneGap来呼叫Web服务

时间:2012-10-19 16:24:16

标签: android web-services cordova

我正在尝试在Android上开发一个关于phonegap的应用程序。

我要做的是从我的应用程序调用web服务,这将用于数据访问。

我在网上找到了很多关于如何做到这一点的表格,而我能找到的最简单的表格似乎就是这样吗

<script type="text/javascript">
 $(document).ready(function() {
  $.ajax({
type: "POST",
url: "http://www.webservicex.net/stockquote.asmx/GetQuote",
data: "{'usd'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {

  // Insert the returned HTML into the <div>.
  $('#Content').html(msg.d);
}
 });
});

然而,我只能看到我已经放入div的文本,div内容不会改变。我正在测试Galaxy SIII设备,而不是在模拟器上测试。

1 个答案:

答案 0 :(得分:1)

我的猜测是,似乎没有任何事情发生,因为你得到的是fail,而不是success。尝试添加错误处理程序,看看会发生什么。

.fail(function() { alert("error"); })

您可能遇到“跨域”问题(因为您尝试从其他域获取Ajax),并且可能需要使用JSONP而非JSON作为您的dataType。有关JSONP的详细信息,请参阅this postthe docs

编辑:

Here is a fiddle此代码的实施。

$(document).ready(function() {

//here is one way using the 'error' handler
    $.ajax({
        type: "POST",
        url: "/failOnPurpose",
        data: "{'usd'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error:function(jqXHR, textStatus) { 
            alert("error:" + textStatus); 
        },
        success: function(msg) {        
          // Insert the returned HTML into the <div>.
          $('#Content').html(msg.d);
        }    
    });

//here is another way using the 'fail' request handler
    $.ajax({
        type: "POST",
        url: "/failOnPurpose",
        data: "{'usd'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",            
        success: function(msg) {        
          // Insert the returned HTML into the <div>.
          $('#Content').html(msg.d);
        }    
    }).fail(function(jqXHR, textStatus) {
              alert( "fail: " + textStatus );
    });

});​