duangong1979
2015-01-21 01:26
浏览 79

使用JSONP创建回调

I'm attempting to access data cross domain (testing locally) but the data keeps failing to load.

$.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");
    }
  });

The PHP is as follows (function is called through a switch statement earlier in the file).

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 are set at the start of the PHP document.

header('Content-Type: application/json');

The error I am receiving (if I run the PHP file by itself) is Undefined index: callback. The json string echoes fine as text after this error. (I have tried echo $_POST[...] as well).

How can I get this callback to work or how do I define it properly? Any help is appreciated.

图片转代码服务由CSDN问答提供 功能建议

我正在尝试访问数据跨域(本地测试)但数据仍然无法加载。

  $。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(  “加载数据时出错”); 
} 
}); 
   
 
 

PHP如下所示(函数通过文件前面的switch语句调用) 。

  function get_json(){
 $ mysqli = db_connect(); 
 $ sql =“SELECT * FROM json_test”; 
 $ result = $ mysqli-&gt  ; query($ sql); 
 
 $ rows = array(); 
 
 if 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文件)是 未定义的索引:回调。 在此错误之后,json字符串作为文本回显。 (我也尝试了 echo $ _POST [...] )。

如何让这个回调起作用或如何正确定义? 任何帮助表示赞赏。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanli0453 2015-01-21 02:00
    已采纳

    I was able to fix the error in the PHP file by changing the callback to the following:

    $callback = "";
    if (array_key_exists('callback', $_GET) == TRUE) {
      $callback = $_GET['callback'];
    }
    echo $callback."('".json_encode($rows)."');";
    

    The AJAX query now also retrieves the JSON data successfully.

    已采纳该答案
    打赏 评论
  • drtldt55533 2015-01-21 01:34

    add this parameter:

    &jsoncallback=? 
    
    打赏 评论

相关推荐 更多相似问题