【发布时间】:2016-04-02 22:44:13
【问题描述】:
我尝试在 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 . ')';
?>
【问题讨论】:
-
能看到php脚本吗?无法对您自己域之外的 JSON 文件使用 jQuery .getJSON() 函数。但是可以使用 JSONP。
-
我会仔细检查解析的 JSON,以及我传递给第三方代码的任何其他内容,以确保结构是第三方代码所期望的。我的第一个猜测是,其中的某些代码期望某些东西是数组或字符串(这就是拥有 slice() 方法的人),但“某物”都不是。或者尝试在调试器中进入 highcharts 代码(Chrome/IE/FF 中的 F12)。跟踪每个函数,直到看到 c.slice 调用。或者 grep "c.slice" 的 highcharts 代码。
-
这是一个 JS 堆栈跟踪:stackoverflow.com/a/635852/424129
标签: javascript jquery json ajax highcharts