【问题标题】:how to access returned data in ajax from php?如何从php访问ajax返回的数据?
【发布时间】:2014-05-03 20:32:38
【问题描述】:

好的,我可能有一些我无法找到的语法问题,但我认为还有其他问题。

我有一个 .php 文件,它从数据库中选择多个值,然后将结果“回显”到它来自的 ajax 调用。

.php 看起来像这样:

<?php
    require("../config/db.php");

    $db = mysql_connect(DB_HOST, DB_USER, DB_PASS)or die("Error connecting to database.");
    mysql_query("SET NAMES UTF8");
    mysql_select_db(DB_NAME, $db)or die("Couldn't select the database."); 

    $query = "SELECT online_users, chat_messages, cards_order FROM track_changes LIMIT 1";
    $result = mysql_query($query, $db) or die(mysql_error().': '.$query);
    $row = mysql_fetch_array($result);

    $changes = array('online_users'=>$row['online_users'],
                'chat_messages'=>$row['chat_messages'],
                'cards_order'=>$row['cards_order']);

    echo json_encode($changes, JSON_FORCE_OBJECT);
?>

jQuery ajax 调用看起来像这样:

$(document).ready(function() {
$.ajax({ 
    type: 'POST',
    url: '/kanbannew/php_scripts/track_changes.php',
    data: { },
    async: false,
    success: function (data) {      
        console.log(data);
        var users = data.online_users;
        var chat = data.chat_messages;
        var cards = data.cards_order;
        console.log("Online users: " + users + "\nChat messages: " + chat + "\nCards order: " + cards);
    },
    error: function(xhr, desc, err) {
        console.log(xhr);
        console.log("Details: " + desc + "\nError:" + err);
    }
}); // ajax end
});

问题出在第一个警报中,我得到了 key:values 之类的

{"online_users":"0","chat_messages":"0","cards_order":"0"}

但在第二个警报中,我对每个值都未定义:

Online users: undefined
Chat messages: undefined
Cards order: undefined

此印刷品来自 chrome conzole。 任何想法为什么我不能访问零??

【问题讨论】:

    标签: php jquery mysql ajax


    【解决方案1】:

    添加数据类型。

    $(document).ready(function() {
    $.ajax({ 
        type: 'POST',
        url: '/kanbannew/php_scripts/track_changes.php',
        data: { },
        dataType: 'json',
        async: false,
        success: function (data) {      
            console.log(data);
            var users = data.online_users;
            var chat = data.chat_messages;
            var cards = data.cards_order;
            console.log("Online users: " + users + "\nChat messages: " + chat + "\nCards order: " + cards);
        },
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nError:" + err);
        }
    }); // ajax end
    });
    

    【讨论】:

    • Aaaah :) 我知道我忘记了它的声音。感谢并在 10 分钟内标记为答案。
    【解决方案2】:

    你可以添加

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

    到您的 php 代码(在您回显任何内容之前)以达到相同的结果,如果您希望您的代码被第三方使用,这可能会有所帮助。但我肯定会添加 dataType 以及 alexey 的建议

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 2019-02-06
      相关资源
      最近更新 更多