【问题标题】:JSONP calls not working with apple-mobile-web-app-capable="yes"JSONP 调用不适用于 apple-mobile-web-app-capable="yes"
【发布时间】:2011-12-06 12:44:14
【问题描述】:

问题: 设置了<meta name="apple-mobile-web-app-capable" content="yes" />,我所有的 jsonp 请求都被拒绝了。我通过设置 content="yes" 了解到,您无法更改页面。但我不知道你不能请求外部资源。此应用必须全屏显示。有没有办法在 html5 应用上使用这个标签将 iPad 设置为全屏模式?

现在我的请求只是被发送到另一个子域并且它们都被拒绝了?任何人都知道如何解决这个问题?允许 jsonp 并强制全屏模式?

【问题讨论】:

    标签: jquery ipad html webkit iphone-standalone-web-app


    【解决方案1】:

    所以解决这个问题很棘手。

    使用 JSONP,您无需担心 跨域 问题。但是,当您设置 <meta name="apple-mobile-web-app-capable" content="yes" /> 时,您将能够发送跨域请求,而无需在标头中指定 Access-Control-Allow-Origin。

    所以这里是解决方案:

    注意:在这两个请求中,我都指定了 &jsoncallback=?

    不起作用:

    function jsonpRequest(req){
        $.getJSON(req,
          function(data) {
            // JSONP will run getJson() above;
        });
    }
    

    有效:

    function jsonpRequest(req){
            $.ajax({
              url: req,
              dataType: 'json',
             beforeSend: setHeader,
              //data: data
              //success: callback
            });
            /*
            $.getJSON(req,
                  function(data) {
                    // JSONP will run getJson() above;
                });*/
    
        }
        function setHeader(xhr) {
    
         xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
        } 
    

    【讨论】:

      【解决方案2】:

      不确定您是否已经这样做了,但您是否添加了“callback=?”在您的查询参数中?

      查看此处的 dataType 部分了解更多信息:http://api.jquery.com/jQuery.ajax/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-04
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        相关资源
        最近更新 更多