3

嗨,我一直在尝试从 phonegap-android 应用程序中使用用 ASP.NET 编写的 Web 服务,但我似乎在某个地方犯了一个错误。

值得一提的是,当我在 Eclipse 的 android 模拟器上运行它时,它会失败。我已经在网络浏览器中尝试过相同的代码,而且效果很好。

这是与问题相关的Index.html部分

/* Here i declare 'webServiceURL' which holds the path to the service that's
   hosted at 10.0.0.174 (WLAN ip of my computer). I use this instead of 127.0.0.1
   because on a mobile phone localhost points to the phone itself. */

// Here i declare 'datos' which are the parameters sent to the web service method 

$.ajax({
  url: webServiceURL + "InicioSesion",
  type: "POST",
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify(datos),                    
  dataType: 'json',
  beforeSend: function() {$.mobile.loading('show')},
  complete: function() {$.mobile.loading('hide')},
  success: function (data, textStatus, jqXHR) {
    // Here i do stuff with 'data'
  },
  error: function (jqXHR, textStatus, errorThrown) {
    // Here i print errors
  },
)};

phonegap config.xml添加访问源权限

<access origin="*"/>

对 ASP.NET Web 服务的web.config的修改

<system.webServer>
  <httpProtocol>
   <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
   </customHeaders>
  </httpProtocol>
</system.webServer>

我面临的错误是,当我将 'dataType' 设置为 'json' (这是我所期望的)时,ajax 请求失败并且打印 'textStatus' 给了我ParserERROR

所以我尝试使用'dataType'作为'text'而不是'json'来查看Web服务响应是否有问题,我意识到问题在于响应为NULL。

记住我提到的,这段代码在 Web 浏览器上完美运行,它在从 android 模拟器运行的 phonegap 应用程序上失败。

如果有使用 phonegap 使用 ASP.NET Web 服务的经验的任何人都可以帮助我!我不知道我错过了什么或做错了什么!到目前为止,我已经为此工作了 2 天,但我找不到解决方案!

4

2 回答 2

3

我已经发现我犯的错误了!.

在添加到 phonegap config.xml的访问源权限上,我放置了:

<access origin="*"/>

那是不正确的!,正确的说法是在星号('*')之前加上一个点('.'):

<access origin=".*"/>

就是这样!,问题解决了!.

于 2013-09-24T18:49:46.430 回答
1

您可能需要使用[System.Web.Script.Services.ScriptService]来装饰您的 Web 服务,以使其可用于 javascript 客户端。

例子:

[WebService(Namespace = "http://tempuri.org/&quot;)]  
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
[System.Web.Script.Services.ScriptService]  
public class dummyWebservice : System.Web.Services.WebService  
{  
[WebMethod()]  
public string HelloToYou(string name)  
{  
return "Hello " + name;  
}  
[WebMethod()]  
public string sayHello()  
{  
return "hello ";  
}    
} 

来源和附加信息/示例:http: //vincenthomedev.wordpress.com/2009/02/10/sumption-an-aspnet-web-service-or-page-method-using-jquery/

于 2013-09-19T21:13:31.650 回答