使用 JSONP 创建回调
Creating a Callback with JSONP
我正在尝试跨域访问数据(在本地测试),但数据始终加载失败。
$.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).");";
}
Headers 设置在 PHP 文档的开头。
header('Content-Type: application/json');
我收到的错误(如果我 运行 PHP 文件本身)是 Undefined index: callback
。 json 字符串在此错误后作为文本正常回显。 (我也试过echo $_POST[...]
)。
我怎样才能让这个回调起作用或者我该如何正确定义它?感谢任何帮助。
添加此参数:
&jsoncallback=?
我能够通过将回调更改为以下内容来修复 PHP 文件中的错误:
$callback = "";
if (array_key_exists('callback', $_GET) == TRUE) {
$callback = $_GET['callback'];
}
echo $callback."('".json_encode($rows)."');";
AJAX 查询现在也可以成功检索 JSON 数据。
我正在尝试跨域访问数据(在本地测试),但数据始终加载失败。
$.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).");";
}
Headers 设置在 PHP 文档的开头。
header('Content-Type: application/json');
我收到的错误(如果我 运行 PHP 文件本身)是 Undefined index: callback
。 json 字符串在此错误后作为文本正常回显。 (我也试过echo $_POST[...]
)。
我怎样才能让这个回调起作用或者我该如何正确定义它?感谢任何帮助。
添加此参数:
&jsoncallback=?
我能够通过将回调更改为以下内容来修复 PHP 文件中的错误:
$callback = "";
if (array_key_exists('callback', $_GET) == TRUE) {
$callback = $_GET['callback'];
}
echo $callback."('".json_encode($rows)."');";
AJAX 查询现在也可以成功检索 JSON 数据。