gpt4 book ai didi

javascript - JSON.parse 对象返回未定义的值

转载 作者:行者123 更新时间:2023-11-28 18:17:08 27 4
gpt4 key购买 nike

我有一个 ajax 请求,它从表单提交中返回一些非常基本的数据,如图所示。

PHP:

if ( ! empty($errors)) {

// if there are items in our errors array, return those errors
$data['success'] = false;
$data['errors'] = $errors;
} else {

$outputArray = array();

$outputArray[] = array(
'students' => base64_encode($_POST['students']),
'sub' => $_POST['subject'],
'topic' => $_POST['topic'],
'class' => $_POST['class'],
'checked' => $_POST['checked'],
'pronoun' => $_POST['slider']
);

// if there are no errors process our form, then show a message of success and provide a true success variable
$data['success'] = true;
$data['message'] = json_encode($outputArray);
}

// return all our data to an AJAX call
echo json_encode($data);

Javascript:

$.ajax({
type: 'POST',
url: 'processBatch.php',
data: formData,
dataType: 'json',
encode: true
})

.done(function(data) {
if (!data.success) {
// error handling goes here. Removed for clarity.
} else {
// ALL GOOD!
console.log(data.message);

var obj1 = $.parseJSON(data.message);
var obj2 = JSON.parse(data.message);

console.log("Subject is: " + obj1.sub);
console.log("Subject is: " + obj2.sub);
}
}

从表面上看,一切似乎都很好 - 返回的数据似乎是有效的 JSON(JSONlint 将其清除为有效),但是当我使用 JSON.parse 将其转换为对象时,并尝试引用该对象中的值,返回的值始终是未定义的。我也尝试过 $.parseJSON ,结果是一样的。

一切看起来对我来说都不错,所以任何建议将不胜感激。

返回的字符串示例

[{
"students": "TWlrZQpCb2IK",
"sub": "English",
"topic": "Test topic",
"class": "Test classname",
"checked": "WzEsNSw5XQ==",
"pronoun": "2"
}]

最佳答案

您的 JSON 是一个数组。访问元素时使用数组索引。

console.log(data.message);
console.log("Subject is: " + data.message[0].sub);
<小时/>

另一种方法是重构从 AJAX 文件返回的数组,即将 $outputArray[] 更改为 $outputArray。下面是示例

$outputArray = array();

$outputArray = array(
'students' => base64_encode($_POST['students']),
'sub' => $_POST['subject'],
'topic' => $_POST['topic'],
'class' => $_POST['class'],
'checked' => $_POST['checked'],
'pronoun' => $_POST['slider']
);

现在,在 JS 文件中,您可以直接访问元素,而无需数组索引。

 console.log(data.message);
console.log("Subject is: " + data.message.sub);

关于javascript - JSON.parse 对象返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com