【问题标题】:JSON / JSONP in JQueryJQuery 中的 JSON/JSONP
【发布时间】:2010-04-07 21:23:18
【问题描述】:

我试图弄清楚为什么我的 $.getJSON 方法似乎不起作用,但 $.ajax 工作得很好。首先,这是我的 getJSON 调用:

$.getJSON("http://localhost:1505/getServiceImageList?callback=loadImagesInSelect", loadImagesInSelect);

您可以看到我已经尝试将回调参数直接添加到查询字符串(也尝试不在字符串上)并且我添加了对我的 js 文件中定义的回调方法的引用。

这是 $.ajax 调用,它工作得很好:

function getImages() {
            $.ajax({
                type: "GET",
                url: $('#txt_registry_url').val(),
                dataType: "jsonp",
                success:loadImagesInSelect ,
                error:function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
                }

            });
        }

在此示例中,从文本框中提取的 url 与直接调用 getJSON 中的相同。当方法调用完成时,successMethod 被调用并且一切都处理得很好。

虽然我很喜欢使用这两种方法中的后者,但文档表明 getJSON 似乎是首选的速记方式。

谁能解释我在速记方法中缺少什么以使其全部工作?

提前致谢。

【问题讨论】:

    标签: jquery json jsonp


    【解决方案1】:
    $.getJSON("http://localhost:1505/getServiceImageList?data=yes&callback=?", loadImagesInSelect);
    
    function loadImagesInSelect(json) {
       //whatever you want on success
    }
    

    然后服务器端使用 php(注意:我在 GET 查询字符串中添加了数据)

    $data = getDataAsJSON($_GET['data']);
    echo $_GET['callback'] . '(' . $data . ');';
    

    getJSON 需要查看“callback=?”

    我会坚持使用 $.ajax

    【讨论】:

    • 感谢,当我将回调方法替换为 ?
    【解决方案2】:

    据我了解您需要使用

    $.getJSON("http://localhost:1505/getServiceImageList?callback=?", loadImagesInSelect);
    

    jQuery 将负责为回调命名,然后将调用转发给 loadImagesInSelect

    我希望这会有所帮助 杰罗姆·瓦格纳

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2011-11-04
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2012-04-30
      相关资源
      最近更新 更多