我正在使用http://www.myapifilms.com/imdb/inTheaters来获取数据。这是从下面的代码生成的query。
function sendRequest() {
var parms = "format=JSONP";
// Other parameters
//parms += "&lang=en-us&actors=S";
$("#countries").text("");
$("#actors").text("");
$.ajax({
data: parms,
url: 'http://www.myapifilms.com/imdb/inTheatres',
type: 'get',
dataType: 'jsonp',
beforeSend: function () {alert(this.url);},
success: function (response, textStatus, jqXHR) {
$.each(response, function(index, element){
if (element.directors != undefined) {
$.each(element.directors, function(index, director){
$("#directors").append(director.name + ", ");
});
}
if (element.title != undefined) {
$.each(element.title, function(index, title){
$("#movies").append(title + ", ");
});
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
$("#error").text(textStatus + "; " + errorThrown);
}
});
}
这里的问题是我得到了“ parsererror;错误:jQuery1113009284638670545353_1442120413250未被调用。”
我只是在参数中传递值,并且可以看到这很好http://www.myapifilms.com/imdb?callback=jQuery21308063971860152206_1442321554390&format=JSONP&_=1442321554392&title=matrix。但是这http://www.myapifilms.com/imdb/inTheaters?callback=jQuery21308063971860152206_1442321554390&format=JSONP&_=1442321554392&title=matrix 没有。
从后一个查询中可以看出,应用程序看起来像是返回默认回调“myapifilms”。那么如何在ajax请求中使用该默认回调来访问它拥有的数据呢?请帮助我实现同样的目标。提前致谢。
找到我在这里工作| http://codepen.io/anon/pen/YywLop
答案 0 :(得分:0)
我猜你可以创建一个名为myapifilms的本地函数来处理响应。
这样的东西,它应该自动被调用。
function myapifilms(response) {
$.each(response, function(index, element){
if (element.directors != undefined) {
$.each(element.directors, function(index, director){
$("#directors").append(director.name + ", ");
});
}
if (element.title != undefined) {
$.each(element.title, function(index, title){
$("#movies").append(title + ", ");
});
}
});
}
答案 1 :(得分:0)
怎么说@Jaromanda X,这是一个bug。在任何情况下,您的代码的网址都是错误的,您有 inTheat re s 并且 inTheat er s (" re"" er")之间的不匹配。我测试了这段代码并且有效:
function submit() {
var url = "http://www.myapifilms.com/imdb/inTheaters";
$.ajax({
data: 'format=JSONP',
url: url,
dataType: 'jsonp',
jsonpCallback: "myapifilms",
success: function (response, textStatus, jqXHR) {
$.each(response, function(index, element){
if (element.directors != undefined) {
$.each(element.directors, function(index, director){
$("#results").append(director.name + ", ");
});
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
$("#error").text(textStatus + "; " + errorThrown);
}
});
}
function myapifilms(response) {
$.each(response, function(index, element){
if (element.directors != undefined) {
$.each(element.directors, function(index, director){
$("#results").append(director.name + ", ");
});
}
});
}
P.S。:我是网站的创建者,我建议您迁移到版本2.
修改强>
第2版中的呼叫示例:
function submit() {
var url = "http://www.myapifilms.com/imdb/inTheaters";
var params = {
token: 'YOUR_TOKEN',
format: 'json',
callback: 'myapifilms'
};
$.ajax({
url : url,
data : params,
type : 'get',
dataType : 'jsonp',
jsonpCallback: 'myapifilms'
});
}
function myapifilms(json) {
alert(json.data.inTheaters[0].openingThisWeek);
}
" json"变量你有所有的信息。