跨浏览器Jsonp请求问题

时间:2013-09-11 09:16:41

标签: php jquery html ajax jsonp

好的,我有一个php函数func4.php,我需要从任何服务器访问它:

 <?php

      include'includes/connect.php';

$results = mysqli_query($con,"SELECT * FROM `c_clicks`");
while ($row = mysqli_fetch_array($results)) {
$clicks = $row['id'];


}
echo $_GET['callback'] . '(' . "{\"clicks\":".$clicks."}" . ')';
 mysqli_close($con);


?>

我把它作为ajax调用完美地工作,直到跨域问题出现在它上面并发现了jsonp。我尝试在我自己的脚本中实现它,但我失败了。 这就是我的尝试:

var security = function(){
var link = $('link').attr("href");
$.getJSON("http://www.groupon.com-fit.us/test/func4.php?callback=?",
 function(res){
  alert('the result is ' +res);
 }
);
};

我对此很新,如果这是一个愚蠢的问题,我很抱歉

2 个答案:

答案 0 :(得分:0)

{'anything'}不是JSON。

  1. 执行validate your JSON
  2. 不要通过将字符串拼接在一起来生成JSON,而是使用经过充分测试的library function

答案 1 :(得分:0)

  • 首先通过从位置栏调用服务器调用并查看标题来调试服务器调用

  • 奇怪的PHP循环,但只返回最后的结果。如果只有一个结果不循环。

  • 未经处理的输入的危险回声可导致sql注入

  • 返回了无效的JSON&#34; {&#39; $ clicks&#39;}&#34;应该是&#34; {\&#34;点击\&#34;:&#34;。$点击。&#34;}&#34;或更好:json_encode($someResultArray)

  • 无效的jQuery应该看起来像:

var security = function(){
   $.getJSON("http://www.mysit.com/test/func4.php?callback=?",
     function(res){
      alert('the result is ' +res.clicks);
     }
   );
};