Javascript $.ajaxjsonp回调函数的工作原理

Javascript $.ajaxjsonp回调函数的工作原理,javascript,jquery,json,ajax,callback,Javascript,Jquery,Json,Ajax,Callback,我正在用它来获取数据。这是根据下面的代码生成的 function sendRequest() { var parms = "format=JSONP"; // Other parameters //parms += "&lang=en-us&actors=S"; $("#countries").text(""); $("#actors").text(""); $.ajax({ data: parms

我正在用它来获取数据。这是根据下面的代码生成的

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);
        }
    });
}
这里的问题是我越来越容易出错;错误:未调用jQuery1113009284638670545353_1442120413250

我只是在玩参数中传递值的游戏,可以看出这很好。然而,事实并非如此

从后一个查询中可以看到,应用程序似乎正在返回默认回调。那么,如何在ajax请求中使用默认回调来访问它所拥有的数据呢?请帮助我实现同样的目标。提前谢谢


在这里找到我的工作|

我想您可以创建一个名为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 + ", ");
            });
        }
    });
}

@Jaromanda X是怎么说的,这是一个bug。在任何情况下,您的代码的URL都是错误的,您的In-Atres和In-Atres在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 + ", ");
            });
        }
    });
}
注:我是网站的创建者,我建议你迁移到版本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变量中,您拥有所有信息。

将jsonpCallback:“myapifilms”添加到ajax调用中-编辑:hmmm,似乎不起作用耶。。。是的。。我也试过了。可能是因为这个请求网站被破坏了-你试过联系网站所有者吗?嗨,阿尔贝托,这在版本2中是什么样子的