0
我有3個使用JSONP嵌套的$ .ajax調用,第一個$ .ajax調用在函數中工作,但第三個調用失敗回來給我這個錯誤:Uncaught TypeError: Property 'insertFilmData' of object [object Object] is not a function
JSONP回調錯誤:對象[object對象]的屬性'insertFilmData'不是函數
CODE:
function searchFilms(film, settings) {
if (film === '') {
console.log("enter a movie");
} else {
$.ajax({
type: 'GET',
url: 'http://api.themoviedb.org/3/configuration?api_key=XXX',
async: false,
jsonpCallback: 'getSearchResults',
contentType: 'application/json',
dataType: 'jsonp',
success: function(json) {
if (json.images) {
settings.imageData = json.images;
getSearchResults(json, settings);
}
}
});
function getSearchResults(data, settings) {
$.ajax({
type: 'GET',
url: 'http://api.themoviedb.org/3/search/movie?api_key=XXX&query=' + film,
async: false,
jsonpCallback: 'deliverResults',
contentType: 'application/json',
dataType: 'jsonp',
success: function(json) {
if (json.total_results !== 0) {
deliverResults(json, settings);
}
}
});
function deliverResults(data, settings) {
var results = data.results;
var html = "<ul id='film-search-results' data-role='listview' data-inset='true'>";
for (var i = 0; i < results.length; i++) {
var result = results[i];
var filmId = result.id;
$.ajax({
type: 'GET',
url: 'http://api.themoviedb.org/3/movie/' + filmId + '?api_key=XXX&append_to_response=' + settings.extras,
async: false,
jsonpCallback: 'insertFilmData',
contentType: 'application/json',
dataType: 'jsonp',
success: function(json) {
if (json) {
settings.html = html;
insertFilmData(json, settings);
}
}
});
function insertFilmData(data, settings) {
var poster_base_url = settings.imageData.base_url;
var poster_size = settings.imageData.poster_sizes[0];
var poster_filepath = data.poster_path;
var poster_url = poster_base_url + poster_size + "/" + poster_filepath;
var html = settings.html + "<li><img src='" + poster_url + "' alt='Poster' /><a class='ui-link-inherit'><h3 class='ui-li-heading'>" + data.title + "</h3><p class='ui-li-desc'><strong>" + data.tagline + "</strong></p><p class='ui-li-desc'>" + data.overview + "</p></a></li>";
}
}
html = html + "</ul>";
console.log(html);
$('#content-add-title').html(html);
$('#film-search-results').trigger("create");
}
}
}
}
我是很新,使用JSONP跨域調用,所以我不知道發生了什麼錯誤看到,因爲前兩個回調火這只是最後一個沒有的。任何幫助或方向將不勝感激。謝謝
我嘗試了兩種建議都無效。你的第二個建議稱爲jsonp回調,但回調的參數在函數內部是未定義的。不知道如何將json從$ .ajax調用和設置對象傳遞給回調 – Joe
我想這是一個單獨的問題。嗯......我可以看到這個代碼錯誤的唯一的東西是'async:false'部分。來自'async'的jQuery文檔:「跨域請求和數據類型:」jsonp「請求不支持同步操作。」我希望jQuery會拋出一個錯誤,但顯然不是。試着改變它,看看會發生什麼。 (這是一個瘋狂的猜測,但你應該改變它。) –