【发布时间】:2015-03-19 10:27:51
【问题描述】:
我正在尝试跨域访问数据(本地测试),但数据一直无法加载。
$.ajax({
type: 'POST',
url: 'http://localhost/php/ajax/json.php',
dataType: 'jsonp',
data: {action: 'get_json'},
success: function(data) {
console.log(data);
},
error: function() {
console.log("Error loading data");
}
});
PHP如下(通过文件前面的switch语句调用函数)。
function get_json() {
$mysqli = db_connect();
$sql = "SELECT * FROM json_test";
$result = $mysqli->query($sql);
$rows = array();
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
array_push($rows, $row);
}
}
echo $_GET['callback']."(".json_encode($rows).");";
}
标题设置在 PHP 文档的开头。
header('Content-Type: application/json');
我收到的错误(如果我自己运行 PHP 文件)是Undefined index: callback。出现此错误后,json 字符串作为文本很好地回显。 (我也试过echo $_POST[...])。
我怎样才能让这个回调工作或我如何正确定义它?任何帮助表示赞赏。
【问题讨论】:
-
header 对于输出不正确,被浏览器认为是脚本。
jsonp基本上是一个在收到时执行的函数