我正在使用PhoneGap 为Android 设计一个应用程序,它基本上调用一个Web 服务,它现在将包含一个方法,该方法返回一些东西(比如说一个字符串)作为返回值。最后,我希望 Web 服务能够处理我要针对我的 Windows Azure 数据库执行的查询。
我选择的 Web 服务是启用 Ajax 的 WCF 服务。这是正确的选择吗?
我尝试了一个简单的应用程序来看看它是如何工作的。首先,我在 Visual Studio 中创建了一个新项目,然后创建了一个支持 Ajax 的 WCF 服务。我只添加了一种简单的方法:
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat= WebMessageFormat.Json)]
public string GetName()
{
return "Hello world";
}
我根本没有修改 Web.config。
然后,我打开 Eclipse 并创建了一个新的 PhoneGap Android 应用程序,其中只有一个文本框和一个按钮。每次单击此按钮,都会调用 Web 服务,并使用以下方法将返回值显示在文本框中:
$('#button').click(function(){
$.ajax({
type: "GET",
url: "http://localhost:11634/MobileService.svc/GetName",
contentType: "application/json",
dataType: "json",
success: function (result) {
$("#textbox").text(result);
},
error: function (textStatus) {
$("#textbox").text(textStatus);
}
});
});
当我尝试使用此方法时,我在 Firefox 中收到以下错误:"NetworkError: 405 Method Not Allowed
. 然后我尝试将数据类型更改为jsonp
并在 AJAX 调用之前添加以下行,以允许跨域请求:
$.support.cors = true;
. 现在在 Firefox 中,我收到此错误:
SyntaxError: invalid label
{"d":"Hello world"}
您能否指导我,我是否使用了正确的方法以及如何处理跨域问题?