PHP返回JSON?作为回调

时间:2016-02-27 15:17:49

标签: php json highcharts

我试图像这样返回JSON响应:

 ?([
[Date.UTC(2013,5,2),0.7695],
[Date.UTC(2013,5,3),0.7648]
]);

完整示例:https://www.highcharts.com/samples/data/jsonp.php?filename=usdeur.json&callback=?

2 个答案:

答案 0 :(得分:1)

  1. JSONP的内容类型为application/javascript而非application/json
  2. Access-Control-Allow-Origin是JSONP的现代替代品。不要将它与JSONP一起使用。
  3. 您需要使用callback查询字符串参数的值作为您正在调用的JavaScript函数名称。 ?不是有效的函数名称。 jQuery将使用真实的回调名称替换URL中的?占位符。使用$_GET['callback']代替"?"
  4. 不要手动生成JavaScript数据结构。请改用json_encode($some_array)
  5. Date.UTC(2013,5,2)无效JSON。虽然它在JavaScript程序中很好,但你不应该在声称是JOSNP的东西中使用它。生成日期的字符串表示,并使用客户端逻辑将其膨胀为Date对象。
  6. 因此,如果没有访问原始数据的好处,您可能需要以下内容:

    header('Content-Type: application/javascript');
    echo $_GET['callback'] . "(" . json_encode($feedList) . ");";
    

    更好的是,切换到:

    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: *');
    echo json_encode($feedList);
    

    ...然后使用XMLHttpRequest而不是JSONP方法获取它。

答案 1 :(得分:0)

您需要使用json_encode编码该响应:http://php.net/manual/en/function.json-encode.php

使用数组时要注意深度参数