簡體   English   中英

使用jquery解析JSON響應中的項目

[英]Using jquery to parse items from a JSON response

我正在使用PHP和Ajax解析一些JSON。 PHP正在創建這樣的數組。

$myObj->pid = $_POST["parentid"];
$myObj->comp = $comp;
$myObj->colour = $statuscolour;
$myJSON = json_encode($myObj);
header('Content-Type: application/json');
echo $myJSON;

我用下面的jQuery代碼

$.ajax({
        type: "POST",
        dataType: "json",
        url: "msstatup.php",
        data: data
    }).done(function(msg) {
    var response = jQuery.parseJSON(JSON.stringify(msg));
    console.log(response);
    pid = response[0].pid;
    console.log('id = ' + pid);
    });

我可以看到第一個console.log的輸出為

Object {pid: "p1", comp: 20, colour: "red"}

但是我無法提取單個變量,它給出了消息

Uncaught TypeError: Cannot read property 'pid' 

如何提取變量?

您已經使它變得比所需復雜。 msg已經是一個對象,然后您可以將其轉換為字符串,然后使用stringifyparseJSON返回對象。 然后,當它是一個對象時,嘗試像數組一樣使用它。

嘗試這個:

$.ajax({
    type: "POST",
    dataType: "json",
    url: "msstatup.php",
    data: data
}).done(function(msg) {
    var pid = msg.pid;
    console.log('id = ' + pid);
});

您正在返回一個對象,而不是數組。

同樣,對數據對象進行字符串化並再次將該字符串解析回對象也沒有意義。

嘗試

var pid = msg.pid;
console.log('id = ' + pid);

首先,無法想象為什么先進行字符串化然后解析JSON響應是必要的。

其次,您嘗試訪問response[0]就像它是一個數組一樣,不是。 您可以簡單地使用

response.pid;

訪問對象密鑰。

由於您無需先進行字符串分類再解析響應,因此您可以直接訪問msg ,因此一切都歸結為

$.ajax({
    type: "POST",
    dataType: "json",
    url: "msstatup.php",
    data: data
}).done(function(msg) {
    console.log(msg.pid);
});

暫無
暫無

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

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