尝试在JQuery中调用函数时,“TypeError:c.slice不是函数”

时间:2016-04-02 22:44:14

标签: javascript jquery json ajax highcharts

我尝试在JQuery ajax调用中调用一个函数,但它一直向我显示“TypeError:c.slice不是函数”,我不太明白为什么会发生这种情况?我感谢您的帮助!提前谢谢!

这是我的AJAX电话:

$.ajax({
     url: "my.php",
        method: "get",
        dataType: "json",
        data: requestJSON,
        success: function(jsondata){
         $.getJSON('my.php?callback=?', function (data) {

                // Create the chart
                $('#historicalcharts').highcharts('StockChart', {


                    rangeSelector : {
                        selected : 1
                    },

                    title : {
                        text : 'AAPL Stock Price'
                    },

                    series : [{
                        name : 'AAPL Stock Price',
                        data : data,
                        type : 'area',
                        threshold : null,
                        tooltip : {
                            valueDecimals : 2
                        },
                        fillColor : {
                            linearGradient : {
                                x1: 0,
                                y1: 0,
                                x2: 0,
                                y2: 1
                            },
                            stops : [
                                [0, Highcharts.getOptions().colors[0]],
                                [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
                            ]
                        }
                    }]
                });
            }); 
 });

}

我尝试模仿此链接中的函数,唯一的区别是它在每次调用时检索JSON数据,但我使用的是从php脚本获取的JSON数据。 http://www.highcharts.com/stock/demo/area

这是我的PHP代码

<?php

if (isset($_GET['request'])) {  
    header("content-type: application/json"); 
    $retrievechartJSON = 'http://dev.markitondemand.com/MODApis/Api/v2/InteractiveChart/json?parameters=' . $_GET['request'];
    $json = file_get_contents($retrievechartJSON);
    echo $_GET['callback']. '('. $json . ')';

?>

1 个答案:

答案 0 :(得分:4)

来自HighCharts:

无法在您自己的域之外的JSON文件上使用jQuery .getJSON()函数。但是可以使用JSONP。

您需要向PHP添加一个回调,它包装JSON然后返回该JSON对象:

示例

<?php
header("content-type: application/json"); 

$array = array(7,4,2,8,4,1,9,3,2,16,7,12);

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

?>

通过这些更改,您可以使用jQuery&#39; $ .getJSON(),如下所示:

var url =  "http://url-to-your-remote-server/jsonp.php?callback=?";

$.getJSON(url,  function(data) {
    var yourJSONP = data;
    // render you chart here
});

以下是跨域数据的相关文档:

http://www.highcharts.com/docs/working-with-data/getting-data-across-domains-jsonp