【问题标题】:Difference between dataType jsonp and JSONdataType jsonp 和 JSON 的区别
【发布时间】:2012-06-06 20:02:13
【问题描述】:

我下载 Jquery UI 自动加载,寻找 remote-jsonp.html。这是 ajax 函数,但我打开了控制台。我在控制台中看不到任何请求...

dataType;"jsonp" 和 dataType;"JSON" 有什么区别

$( "#city" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "http://ws.geonames.org/searchJSON",
                dataType: "jsonp",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
                success: function( data ) {
                    response( $.map( data.geonames, function( item ) {
                        return {
                            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                            value: item.name
                        }
                    }));
                }
            });
        },

参考http://jqueryui.com/demos/autocomplete/remote-jsonp.html

【问题讨论】:

    标签: javascript jquery ajax jquery-ui


    【解决方案1】:

    dataType: jsonp表示跨域请求,表示请求不同域,dataType: json表示同域同源请求。

    使用 JSONP 加载到 JSON 块中。添加一个额外的“?callback =?”到 URL 的末尾以指定回调。通过附加禁用缓存 URL 的查询字符串参数“_=[TIMESTAMP]”,除非缓存 选项设置为 true。

    了解same origin policy

    了解更多关于 jQuery AJAX

    【讨论】:

    • cross-browsercross-domain? :s
    • @Joy 绝对是跨域的。
    【解决方案2】:

    如果您正在寻找的是 JSONP,那么您不应该看到 ajax 请求。但是,您应该会看到对该资源的请求,因为 JSONP 用于跨域调用以从不同域中提取数据。

    它返回包裹在函数名中的 JSON 数据。 jQuery 在后台处理函数名称并将数据传递到您的成功处理程序。数据是通过动态创建一个脚本元素来加载的,该元素的 src 属性指向被调用的服务,然后附加到浏览器的 DOM。然后浏览器向资源发出请求,Web 服务以回调函数和数据进行响应。

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2011-02-22
      • 2023-03-11
      • 1970-01-01
      • 2014-08-12
      • 2011-03-03
      • 2020-08-28
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多