【问题标题】:Creating a Callback with JSONP使用 JSONP 创建回调
【发布时间】:2015-03-19 10:27:51
【问题描述】:

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

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

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

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

标题设置在 PHP 文档的开头。

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

我收到的错误(如果我自己运行 PHP 文件)是Undefined index: callback。出现此错误后,json 字符串作为文本很好地回显。 (我也试过echo $_POST[...])。

我怎样才能让这个回调工作或我如何正确定义它?任何帮助表示赞赏。

【问题讨论】:

  • header 对于输出不正确,被浏览器认为是脚本。 jsonp 基本上是一个在收到时执行的函数

标签: php jquery ajax jsonp


【解决方案1】:

添加此参数:

&jsoncallback=? 

【讨论】:

    【解决方案2】:

    我能够通过将回调更改为以下内容来修复 PHP 文件中的错误:

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

    AJAX 查询现在也可以成功检索 JSON 数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 2020-01-03
      • 1970-01-01
      • 2013-10-17
      • 2015-09-20
      • 2012-09-12
      • 2012-06-25
      • 2020-02-22
      相关资源
      最近更新 更多