php - 对 PHP 的 Ajax 调用仅返回 "status 200 OK"但没有包含数据库结果的数组?

标签 php jquery mysql ajax pdo

我对使用 PDO 连接到 mysql 的 php 文件进行 AJAX 调用,并将结果打印到控制台,但显示的唯一结果是:

Object {readyState: 4, responseText: "", status: 200, statusText: "OK"}

相同的调用适用于 msqli,并显示带有结果的 json,我做错了什么?

这是代码:

自定义js:

 /*eslint-env jquery, browser*/
$(document).ready(function(){

$("#botono").click(function(){

    $.ajax({
        type: 'GET',
        url: 'phpf/retraerClientes.php',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function(response) {
            console.log(response);
        },
        error: function(error) {
            console.log(error);
        }
    });

 });

});

PHP:

ini_set('display_errors', 1); 
error_reporting(E_ALL);

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
if(!IS_AJAX) {die('');}

$configs = include('config.php');

 try{

$conn = new      PDO("mysql:host=".$configs["host"].";dbname=".$configs["database"],$configs["use    rname"],$configs["password"]);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT * FROM prueba";
$results = $conn->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$jsonFinal = json_encode($results);
echo $jsonFinal;

}catch(PDOException $ex){
    echo 'Connection With Database Failed: '.$ex->getMessage();
}

更新: 我找到了答案:

$accents = $conn->query("SET NAMES 'utf8'"); 

该行丢失,我的记录有重音,这使得最终的 json 损坏并产生误报

最佳答案

正如我所见,您需要在 PHP 中执行查询:

ini_set('display_errors', 1); 
error_reporting(E_ALL);

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
if(!IS_AJAX) {die('');}

$configs = include('config.php');

 try{

$conn = new      PDO("mysql:host=".$configs["host"].";dbname=".$configs["database"],$configs["use    rname"],$configs["password"]);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT * FROM prueba";
$results = $conn->prepare($sql)->execute()->fetchAll(PDO::FETCH_ASSOC);
$jsonFinal = json_encode($results);
echo $jsonFinal;

}catch(PDOException $ex){
    echo 'Connection With Database Failed: '.$ex->getMessage();
}

http://php.net/manual/es/pdostatement.fetchall.php

关于php - 对 PHP 的 Ajax 调用仅返回 "status 200 OK"但没有包含数据库结果的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123065/

相关文章:

jquery - HTML Bootstrap 3 不向 UL LI 添加事件类

php - 为什么 time() 在我的 MySQL 查询中午夜后出现故障?

mysql-workbench - 如何将 DISTINCT 数据导出到 DISTINCT 文件

php - mysql select查询问题where id in ()

php - 包含文件时 POST 数组为空

php - 是否可以在 while 循环中将 php 变量传递给 html 表?

php - 我是否正确使用 mysqli_real_escape_string?

php - 如果值大于/小于 xyz

javascript - 单击 anchor 标记和外部元素时如何使用 JQuery 交换图像?

javascript - 如何同步链式 jQuery Promise 的顺序