簡體   English   中英

PHP和JQuery-PHP json_encoded 2D數組未到達JQuery Ajax中

[英]PHP and JQuery - PHP json_encoded 2D array doesn't arrive in JQuery Ajax

我正在嘗試創建一個演示,以從運行SQL查詢的PHP腳本獲取數據,獲取關聯的數組和json_encodes的數組,並將其返回給調用php文件中的JQuery ajax調用者。 由於某種原因,它永遠不會到達(請與Firebug一起檢查)。 但是,如果我手動創建一個2D數組json_encode,它可以正常工作。 我完全感到困惑,為什么我的數組從不從SQL生成它,但是如果我只是手動鍵入它就可以。 我已經比較了結果字符串,它們是完全一樣的。

碼:

...snip...
$.ajax({
        type: "GET",
        url: "getclients.php",
        data: { username: $('#staff_list').val() },
        //contentType: "application/json",
        dataType: 'json',
        success: function(results) {
            console.log("results");
        },
        fail: function() {
            console.log("fail!!");
        },
        error: function(r, e, m) {
            console.log("error");
            //console.dir(r);
            console.log(e + ', ' + m);
        }
    })
    .done(function(data) {
        console.log("done");
        //console.log(data);
    });
    console.log("done with change detection...");    
...snip...

PHP文件:

<?php
header('Content-Type: application/json');
error_reporting(0); // prevents a notice from breaking ajax
//session_start();
$username = $_GET['username'];
$json = array();
$test = array(
    array("id"=>4,"first_name"=>"Miles","last_name"=>"O'Brian"),
    array("id"=>5,"first_name"=>"Jean Luc","last_name"=>"Picard"),
    array("id"=>6,"first_name"=>"Reginald","last_name"=>"Barclay")
          );

$mysqli = new mysqli('mydomain', 'myuser', 'mypassword', 'mydb');
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
if ($stmt = $mysqli->prepare("SELECT `id`, `first_name`, `last_name` FROM client WHERE provider_username = ?")) {
    $stmt->bind_param('s', $username);
    $stmt->execute();
    $result = $stmt->get_result();


    while ($row = $result->fetch_assoc()) {
        $json[] = $row;
    }

    $result->close();
}

$mysqli->close();
echo json_encode($json);
echo json_encode($test);// this works
?>    

任何幫助,將不勝感激。 我是PHP新手,但不是編程新手,所以我嘗試了所有我能想到的東西(包括手冊和Google),但完全陷入了困境。

我發現了我的問題。 我在Ajax中設置數據的行:

data: { username: $('#staff_list').val() }

造成了問題。 由於某種原因,它獲取了一個數組,使行

data: { username: $('#staff_list').val()[0] }

解決問題。

您能在這里發布結果集嗎?
$ result-> FETCH_ASSOC()。

請檢查您的php版本。 因為使用代碼中使用的縮短方法添加數組元素“ $ json [] = $ row;” 在PHP 5.4中可用。 查看文檔以獲取更多信息。

第二種選擇,如果它在您的PHP版本中不可用,則可以通過以下方式實現:array_push($ json,$ row); 而不是$ json [] = $ row;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM