JSONP - 我该如何使用它?

时间:2015-04-14 19:29:45

标签: javascript php jquery ajax jsonp

一直试图制作一些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}] )

我哪里错了?

1 个答案:

答案 0 :(得分:2)

问题出在您的PHP脚本中。 当您使用jQuery执行请求时,URL中的问号将替换为动态函数名称。

在PHP方面,您需要使用此动态函数名称来包装数据,而不是使用“jsonCallback”。

您的PHP代码应如下所示:

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