使用jQuery使用Ajax的纯JSONP请求

时间:2013-04-05 16:34:05

标签: jquery ajax jsonp

确定。我到处搜索,没有找到任何可以理解的答案。 请注意它是我第一次实施这种请求。 (“发生在我认为的每个人身上”):P 问题:我有一个json文件说例如https://www.example.com/something.json,我想通过JSONP使用Ajax请求它。 我已经读过,为了发出JSONP请求,你必须将数据包装到回调函数中。所以我编辑了生成json文件的php文件,并添加了$ _GET('callback')函数来包装数据。所以,如果我输入浏览器https://www.example.com/something.json/?callback=jsonpCallBack,我可以看到我的数据包装jsonpCallBack([{.......}]);

在jQuery中,我现在尝试访问此信息并每隔20秒将数据附加到html。 所以我有

      var url='https://www.example.com/something.json/?callback=jsonpCallBack';

      var main= $.ajax({
                type:'GET',
                url : url, 
                dataType:'jsonp',
                jsonpCallback:'jsonpCallBack',
                success: function(data)
                {
                    .......
                     var outputhtml='<ul>';
                     var item = [];
                      for(var i =0; i < data.length-1 ;i++)
                      {

                        var item = data[i];
                        ..........
                     $('.div').html(outputhtml) ;
                }

            });

setInterval(function() {
    main;
},20000);

    main;

但我无法看到我的数据更新。我错过了什么?我还必须使用$ .getJSON()函数来获取数据吗?如果是,将在代码中添加哪里?

很多困惑......

1 个答案:

答案 0 :(得分:0)

试试这样:

var main = function() {
    var url = 'https://www.example.com/something.json/';
    $.ajax({
        url: url,
        jsonp: 'callback',
        dataType: 'jsonp',
        success: function (result) {
            ...
        }
    });
};

window.setInterval(main, 20000);
main();

如果https://www.example.com/something.json/?callback=foobar返回以下结果(您在问题中提到的情况就是这样,对吧?),那将会有效:

foobar({...})