【问题标题】:Why is my jQuery ajax function not firing success after PHP returns json data?为什么我的 jQuery ajax 函数在 PHP 返回 json 数据后没有触发成功?
【发布时间】:2016-02-24 01:18:55
【问题描述】:

我有一个 jQuery ajax 函数,它运行一个 php 文件来返回 MySQL 表中的所有数据行。我可以在开发工具中看到我的 PHP 文件将数据作为 json 回显,但我的 ajax 函数始终运行错误函数而不是成功函数。我错过了一些非常明显的东西吗?任何帮助将不胜感激。

JS

$("#RUN").click(function() {
        $.ajax({
            url: 'api.php',
            data: '',
            dataType: 'json', 
            success: function(data){
                alert('Success');
            },
            error: function(){
                alert('error');
            }
        })
    });

PHP

<?php 
  $databaseName = "workingwithmysql";
  $tableName = "users";
  $connection = mysql_connect("localhost","root",""); 
  $dbs = mysql_select_db($databaseName, $connection);
  $result = mysql_query("SELECT * FROM $tableName");    
  $array = mysql_fetch_row($result);                             
?>

【问题讨论】:

  • 您真的在返回数据吗?你只是显示它被分配给$array,但它永远不会被发送到任何地方。
  • 对不起,我错过了我的 PHP 的那一点。我在最后这样做: echo json_encode($array);但仍然 ajax 运行错误函数。
  • 如果没有检索到数据,Ajax 响应会导致 error。要进行测试,请删除 php 脚本中的 dataType 和仅 echo "response"; 以及 jQuery 成功函数中的 alert(data);
  • stop using mysql_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really pretty easy
  • 您只期待一行数据吗?

标签: php jquery mysql ajax


【解决方案1】:

那个 PHP 代码 sn-p 完成了吗??

添加这两行:

header('Content-Type: application/json');
echo json_encode($array);

编辑:也..打开浏览器的开发工具...可能有一个“网络”选项卡...用它来查看服务器的 ajax 响应。

【讨论】:

  • 我用通常的 echo json_encode($array); 结束我的 PHP但不返回 ajax 函数中的数据。我可以看到来自 PHP 的响应及其预期,但 ajax 函数只运行错误函数,没有别的。 @布拉德肯特
  • @Matrix 您是否只期望一行数据?你的 JSON 坏了吗?
  • 不应该返回多行数据。如果我更改dataType: 'text',我就会得到返回的数据。我认为我返回的数据试图包含 PHP 错误以及实际数据(错误是说 mysql 函数已过时等)
【解决方案2】:

试试看:

<?php
    ob_start();
    $databaseName = "workingwithmysql";
    $tableName = "users";
    $connection = mysql_connect("localhost","root",""); 
    $dbs = mysql_select_db($databaseName, $connection);
    $result = mysql_query("SELECT * FROM $tableName");    
    $array = mysql_fetch_row($result);
    ob_end_clean();
    header('Content-Type: application/json');
    echo json_encode($array);
?>

但您确实应该考虑使用 PDO 来查询数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多