拒绝在jsonp请求上执行脚本

这个问题在这里已经有了答案:

  • 什么是JSONP? [复制] 7个答案

  • 在PHP中,在echo之前设置

    header('Content-Type: application/json');
    

    而你的PHP没有任何回调(你没有返回JSONP)。 你希望它看起来像..

    echo $_GET['callback'].'('.json_encode($arr).')';
    

    编辑

    我错过了绝对的明显。 JSONP用于跨站点AJAX调用。 您将它用作脚本。

    这是加载数据的一种非常尴尬的方式。 正常的方法是通过脚本中的AJAX调用加载数据,而不是全局加载变量。

    如果你真的想用你的设计,保留application / json标签,但是回到原来的echo json_encode($arr); 你也可以放弃?callback ='回调' - 它什么都不做。


    你需要强制指定输出类型。 尝试添加

    header('Content-Type: application/json');
    

    然后在test.php输出数组

    然后您需要将整个编码输出包装为回调名称,以便客户端上的js可以使用它:

    $callbackName = filter_input(INPUT_GET, 'callback');
    echo $callbackName . '(' . json_encode($arr) . ')';
    
    链接地址: http://www.djcxy.com/p/8349.html

    上一篇: Refused to execute script on jsonp request

    下一篇: Use jQuery.getJson to get Web API