簡體   English   中英

來自PHP的AJAX值使用JSON返回為未定義

[英]AJAX value from PHP returned as undefined with JSON

我有一個AJAX腳本通過PHP更新數據庫。

然后,我試圖將兩個變量返回給AJAX成功函數。

當前,當警告返回的數據時,它們顯示UNDEFINED

當我返回JSON但未說明所需的數組部分時,該數組將完整顯示。 但是,只有當我明確聲明要使用數組中的哪個值時,兩個值似乎才變得不確定。

How should I manage these values returned from the PHP?

AJAX

success: function(data) {
    $('#'+data.toUpdate).html(data.quant);
    $('#'+data.toUpdate).addClass('updated_grn');
    alert('quant:' + data.quant + '\nid:' + data.toUpdate);  
}

的PHP

if ($query) {
    echo json_encode(array("toUpdate" => $toUpdate, "quant" => $quant));
}

結果

Ajax返回未定義

當我alert(data)這返回:

返回數據

完整的PHP

$itemid   = ($_POST['itemid']);
$quant    = ($_POST['quant']);
$toUpdate = ($_POST['toUpdate']);

$sql = "UPDATE items_list
        SET `stock_level` = '$quant'
        WHERE item_id = '$itemid'";

$query = mysql_query($sql);

if ($query) {
    echo json_encode(array("toUpdate" => $toUpdate, "quant" => $quant));
}

完整的AJAX

$.ajax({
    type:     'POST',
    url:      url,
    dataType: 'html',
    data: {
        itemid:   itemid,
        quant:    quant,
        toUpdate: toUpdate
    },
    beforeSend: function() {
        $('#'+id+'_num')
            .html("<img src='xxxxxxx.com/home/secure/images/gif/ajax-loader.gif'></img>");
    },
    success: function(data) {
        alert(data);
        //  $('#'+data.toUpdate).html(data.quant);
        //  $('#'+data.toUpdate).addClass('updated_grn');
        //  alert('quant:' + data.quant + '\nid:' + data.toUpdate);
    }
});

只需將dataType: 'html'更改為dataType: 'json' :)

確保$query為true。 我也會做die()所以輸出中沒有其他內容:

 if ($query) {
    die(json_encode(array("toUpdate" => $toUpdate, "quant" => $quant)));
}

您始終可以檢查從PHP獲得的內容:

success: function(data) {
        alert(data);
        $('#'+data.toUpdate).html(data.quant);
        $('#'+data.toUpdate).addClass('updated_grn');
        alert('quant:'+data.quant+'\nid:'+data.toUpdate);  
}

僅供參考。 我在使用WordPress(4.3.1)時發現了此問題,並嘗試將JSON數據加載到WordPress內部的D3.json函數中。 json_encode(some_array)不起作用,但返回未定義。 它返回單個整數值,但不返回任何數組。 UTF-8檢查還是沒有其他幫助。

然后我偶然通過wp_die()命令關閉了php ajax函數,它在那里丟失了。 瞧,這突然起作用了,json_encode返回數組值。

希望這對某人有幫助。

暫無
暫無

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

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