duangong1979 2015-01-21 01:26
浏览 80
已采纳

使用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.

  • 写回答

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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle
  • ¥15 2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 问题5. 请设计一份优惠券的投放策略,需要考虑优惠券的数量、优惠券的金额、投放时间段和投放商品种类等因素。求具体的python代码
  • ¥15 有人会搭建生鲜配送自营+平台的管理系统吗
  • ¥15 用matlab写代码
  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模