【问题标题】:Http Get and PHPHttp Get 和 PHP
【发布时间】:2015-09-05 21:59:06
【问题描述】:

在我的网站上,我使用 ajax 将数据发送到外部 php 脚本,该脚本查询数据库并将结果返回给网站。我遇到了问题,我只能用 php 返回字符串,但我想返回一个对象数组(这是有效的 json)。我的代码现在看起来像这样:

php

$connection = mysqli_connect($adrs, $usr, $pw, $db);

if(mysqli_connect_errno()) {
 die(mysqli_connect_error());
}

if($_GET["feed"] == "hausaufgaben") {
 $query = "SELECT fach, aufgabe, datum FROM hausaufgaben WHERE fachgruppe != '";
 if($_GET["fremdsprache"] == "latein") {
  $query .= "französisch";
 }
 else {
  $query .= "latein";
 }
 $query .= "' AND fachgruppe != '";
 if($_GET["englisch"] == "koch") {
  $query .= "schopper";
 }
 else {
  $query .= "koch";
 }
 $query .= "' AND datum > '" . date("Y-m-d") . "' ORDER BY datum ASC;";

 $result = mysqli_query($connection, $query);

 $data = [];

 while($row = mysqli_fetch_row($result)) {
  $object = '{"fach": "' . $row[0] . '", "datum": "' . $row[2] . '", "aufgabe": "' . $row[1] . '"}';
  array_push($data, json_decode($object));
 }

 echo $data;
}

ajax

$.ajax({
    type: "GET",
    url: "php/getFeed.php",
    cache: false,
    dataType: "json",
    data: {feed: "hausaufgaben", fremdsprache: this.fremdsprache, englisch: this.englisch}
})
.done(function(data, textStatus, jqXHR) {
    alert(typeof(data));
    this.hausaufgaben = data;
})
.fail(function(jqXHR, textStatus, error) {
    alert("error: " + error);
});

它总是抛出错误“Unexpected token A”。我让它将数组中的每一行作为字符串返回,但我不能在我的网站中使用字符串。我的问题是,我无法使用 php 回显对象数组并使用 ajax 获取数组。

【问题讨论】:

  • 你不能返回裸数组。返回他们的 json 编码表示。

标签: php ajax json get echo


【解决方案1】:

您可以通过使用 PHP 数据结构构建 $data 数组,然后使用 json_encode() 将其全部转换为 JSON 字符串以发送到您的 javascript,而不是尝试自己构建一个 json 字符串。

参考json_encode and json_decode

像这样:-

$data = [];

while($row = mysqli_fetch_object($result)) {
    $data[] = $row;
}

echo json_encode($data);

您还必须更改 javascript 以处理对象数组而不是字符串,但这应该很容易

【讨论】:

  • 使用适当的Content-Type 标头(application/json),jQuery 会真正为您解析响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
相关资源
最近更新 更多