我尝试使用phonegap和android来消费服务。
我使用localhost的服务返回带有chrome的json:
{
"GetListaMunicipiosResult": [{
"MunicipioID": "1",
"MunicipioNome": "Florianópolis",
"MunicipioUf":"SC"
}, {
"MunicipioID": "2",
"MunicipioNome": "Jaraguá do Sul",
"MunicipioUf": "SC"
}]
}
在我的.js
文件中,我使用代码调用GET json:
$('#cidades_page').live('pageshow',function(event){
$.ajax("http://10.0.2.2:56976/MunicipiosService.svc/ListaMunicipios",{
beforeSend: function (xhr) {
$.mobile.showPageLoadingMsg();
alert("beforeSend");
},
complete: function () {
// $.mobile.hidePageLoadingMsg();
alert("complete");
},
contentType: "application/json",
dataType: "jsonp",
jsonp: "callback",
type: "GET",
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
//alert(thrownError);
},
success: function (data) {
alert(JSON.stringify(data));
}
});
});
但是当页面显示时,只有警报警报(“beforeSend”)被触发,并且在没有任何反应之后。
我使用$ .ajax(....打开json调用,并使用chrome及其工作打开。我不知道还能做什么。
感谢您的帮助
EDIT 我在Windows手机上测试,现在我可以得到错误错误:没有调用GetListaMunicipios。
我的.js:
$.ajax("http://localhost:56976/MunicipiosService.svc/ListaMunicipios?callback=?",{
beforeSend: function (xhr) {
// $.mobile.showPageLoadingMsg();
alert('beforeSend');
},
complete: function () {
// $.mobile.hidePageLoadingMsg();
alert('complete');
},
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
crossDomain: true,
jsonp: 'callback',
jsonpCallback:'GetListaMunicipios',
type: 'GET',
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
alert(thrownError);
},
success: function (data) {
alert('success');
}
});
我的WCF服务
命名空间GuiaService {
[ServiceContract]
public interface IMunicipiosService
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "ListaMunicipios")]
List<ClsListaMunicipios> GetListaMunicipios();
}
}
感谢您的帮助。
答案 0 :(得分:1)
您应该使用done
,fail
和always
。
success
,error
和complete
已被弃用。
更新:正如评论中所述,对于您如何使用它并不是这样。我现在认为问题是因为您使用jsonp
作为类型而不是json
。
jsonp
旨在在加载时自动调用函数,因此您的服务器应该为生成的代码添加函数调用。 jQuery可能会期望这种行为并禁用它自己的回调,或者使用jsonp
机制来触发它自己的回调,但由于你的服务器实际上没有添加函数调用,所以没有任何反应。