我正在使用示例代码(稍加修改)来实现此处的JSONP适配器:http://coenraets.org/blog/2013/04/building-pluggable-and-mock-data-adapters-for-web-and-phonegap-applications/
我修改后的内存适配器可以工作,但是当我尝试从使用模拟数据转换为远程服务器的JSONP数据对象时,它不起作用。下面是我的内存适配器:
var JSONPAdapter = function() {
this.initialize = function(data) {
var deferred = $.Deferred();
url = data;
deferred.resolve();
return deferred.promise();
}
this.findById = function(id) {
return $.ajax({url: url + "/" + id, dataType: "jsonp"});
}
this.findByName = function(searchKey) {
return $.ajax(
{
url: url + "?Name=" + searchKey,
dataType: "jsonp",
success: function (data) { },
error: function (XHR, textStatus, errorThrown) { alert("error: " + errorThrown + '\nurl: ' + url + "?Name=" + searchKey);
}
});
}
this.getAll = function getAll() {
return $.ajax({ url: url, dataType: "jsonp" });
}
var url;
}
答案 0 :(得分:1)
你不需要/ callback =?附加到网址的末尾。这是自动处理的,因为dataType设置为' jsonp'。
答案 1 :(得分:0)
我怀疑这是由于你的JSONData变量的范围。 如果getJSONData()调用中存在错误,则无法正确初始化。在定义函数之前尝试声明JSONData变量。