IMDb XML错误捕获,jQuery.type没有返回任何内容

时间:2014-02-27 21:01:32

标签: javascript jquery ajax xml json

我正试图在我的IMDb AJAX调用中捕获错误/没有结果。

代码将标题结果与JSONP中的搜索词匹配,以覆盖同源策略。 我正在处理这个教程: Does IMDB provide an API?

当没有结果时,IMDb发送XML错误,我正试图抓住它并发出警报('错误')。

以下是代码:

function searchDatabase() {

    var searchTerm = document.getElementById('search').value;
    var firstLetter = searchTerm.charAt(0);
    var resultDiv = document.getElementById('result');

    $('#result').empty();

    $.ajax({
        url: 'http://sg.media-imdb.com/suggests/' +firstLetter+ '/' +searchTerm+ '.json',
        dataType: 'jsonp',
            jsonp: false,
        jsonpCallback: 'imdb$'+searchTerm,
        statusCode: {
            403: function() {
                alert('HTTP ERROR');
            }
        }
    }).done(function(response) {
        if(jQuery.type(response) !== "object") {
                alert('ERROR');
            } else {
            alert(jQuery.type(response));
                for(var x in response["d"]) {
                resultDiv.insertAdjacentHTML('beforeend', '<br/>' +response["d"][x]["l"]+ '<br/>');
            }
        }
    }).fail(function() {
        alert('ERROR');
    });

}

首先,什么数据类型是XML?我还是JSON和XML的新手,我想我明白JSON是一个对象?我在其他地方读过JSON不是一个对象(与Javascript对象文字相比)。

jQuery.type返回'string','array'等,它将其他所有内容返回为'object。 当搜索词(例如“some”)成功返回结果时,它处于JSON状态,因此if(jQuery.type(response) === 'object' { alert('OBJECT!'); }的警报响起,但当搜索词无效时(例如“某事物”),它根本不会返回任何内容并在控制台中显示HTTP代码403。

我也尝试按照“statusCode”的说明从这里捕获AJAX调用中的HTTP代码:https://api.jquery.com/jQuery.ajax/但它没有做任何事情。

我错过了一种非常简单的替代方法来捕获错误吗?我担心我只是一个新手,我刚开始学习JSON和XML 3天前。谢谢!

1 个答案:

答案 0 :(得分:0)

我知道没有人回答,但是在我提出这个问题后几天我想出来了,希望其他寻找相同答案的人会觉得这很有用。 我发现这个thread解释了在进行JSONP调用(跨域)时不能使用$ .ajax'error'键来捕获错误。这是我到目前为止找到的唯一方法,用setTimeout记录错误。