尽管PHP正在获取数据,但jQuery对PHP的GET请求失败

时间:2016-07-08 11:54:37

标签: javascript php jquery ajax

我编写了一个php脚本,该脚本进行SQL查询并从数据库中获取唯一名称列表。

我正在使用jQuery向php脚本发出AJAX GET请求。当我检查控制台中的资源时,我看到正在调用php脚本,当我检查响应时,它包含一个唯一名称列表。

但是,jquery GET请求失败,并在控制台中显示错误消息。

查看我的代码可能更容易也更清晰,因为我不知道这里有什么问题。请参阅下面的代码。

PHP

<?php

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

    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT DISTINCT(name) FROM customer";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo json_encode(array('customer' => $row["name"]));
        }
    } else {
        echo "0 results";
    } 
    $conn->close();
?>

JS

$.ajax({
  type: 'GET',
  url: 'getcustomers.php',        
   success: function(data){
     console.log(data);
   },
   error: function() {
     console.log('error');
   }
});

在控制台中,它只是说error,这意味着它已执行error功能。

当我在浏览器中加载php文件时,它会显示以下内容。

{"name":"Peter"}{"name":"Alan"}{"name":"Mike"}

4 个答案:

答案 0 :(得分:3)

您的JSON响应不是有效的。您正在每次迭代时打印每个数据行。所以用这个替换while语句

<artifactId>

答案 1 :(得分:0)

考虑到你的脚本会返回任何结果(我希望你试过在broswer中运行它)然后你可以使用这样的东西:

$.get('path/to/file/filename.php').done(function(response) {
    $('#exampleDiv').html(response);
});

虽然是常见错误,因为如果您请求的php文件在当前工作目录之外,则必须指定目录路径。

答案 2 :(得分:0)

将错误处理函数标题更改为以下内容:

error: function (jqXHR, textStatus, errorThrown) {

然后打印出来并查看错误是什么

答案 3 :(得分:0)

你在side while循环中回显json_encode字符串,而不是你必须在数组中推送行,最后你只能回显一次json字符串。

$outputArr = array();
if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            array_push(outputArr ,array('customer' => $row["name"]));
        }
    } else {
        echo "0 results";
    } 
echo json_encode($outputArr);