JSONP——我到底要怎么使用它?
JSONP - How The Heck Do I Use It?
一直在尝试编写一些 JSONP 来解决跨域问题。此处使用的答案:Basic example of using .ajax() with JSONP?
$.getJSON("http://example.com/something.json?callback=?", function(result){
//response data are now in the result variable
alert(result);
});
但没有得到想要的结果。我的代码:
jquery
var url = "http://wplivestats.com/stats/jsonp.php?callback=?";
$.getJSON(url, function(result){
//response data are now in the result variable
console.log(result);
});
php
<?php
include('init.php');
$pubid = $_REQUEST['pid'];
date_default_timezone_set ( 'America/New_York' );
$time = date('Y-m-d H:i:s',time()-$polling_minutes*60);
$count = $conn->prepare("select distinct ip from stats where timestamp >= '$time' AND Pubid = '$pubid'");
$count->execute();
$users['users'] = $count->rowCount();
echo "jsonCallback ( [";
echo json_encode($users);
echo "] )";
?>
错误:
ReferenceError: jsonCallback is not defined
jsonCallback ( [{"users":0}] )
我哪里错了?
问题出在您的 PHP 脚本中。
当您使用 jQuery 发出请求时,url 中的问号将替换为动态函数名称。
在 PHP 方面,您需要使用此动态函数名称来包装您的数据,而不是使用 "jsonCallback"。
您的 PHP 代码应如下所示:
echo $_GET['callback'] . "(" . json_encode($users) . ")";
一直在尝试编写一些 JSONP 来解决跨域问题。此处使用的答案:Basic example of using .ajax() with JSONP?
$.getJSON("http://example.com/something.json?callback=?", function(result){
//response data are now in the result variable
alert(result);
});
但没有得到想要的结果。我的代码:
jquery
var url = "http://wplivestats.com/stats/jsonp.php?callback=?";
$.getJSON(url, function(result){
//response data are now in the result variable
console.log(result);
});
php
<?php
include('init.php');
$pubid = $_REQUEST['pid'];
date_default_timezone_set ( 'America/New_York' );
$time = date('Y-m-d H:i:s',time()-$polling_minutes*60);
$count = $conn->prepare("select distinct ip from stats where timestamp >= '$time' AND Pubid = '$pubid'");
$count->execute();
$users['users'] = $count->rowCount();
echo "jsonCallback ( [";
echo json_encode($users);
echo "] )";
?>
错误:
ReferenceError: jsonCallback is not defined
jsonCallback ( [{"users":0}] )
我哪里错了?
问题出在您的 PHP 脚本中。 当您使用 jQuery 发出请求时,url 中的问号将替换为动态函数名称。
在 PHP 方面,您需要使用此动态函数名称来包装您的数据,而不是使用 "jsonCallback"。
您的 PHP 代码应如下所示:
echo $_GET['callback'] . "(" . json_encode($users) . ")";