【问题标题】:Passing Multidimensional Arrays from PHP to JavaScript将多维数组从 PHP 传递到 JavaScript
【发布时间】:2021-04-16 20:57:18
【问题描述】:

我正在尝试将我的多维数组从 php 传递到 javascript,

$settingsArray = array('genSettings' => array(), 'settings' => array());

$settingsArray['genSettings'] = array(
    "userName" => array("error" => false, "msg"=> ""),
    "email" => array("error" => false, "msg"=> ""),
    "firstName" => array("error" => false, "msg"=> ""),
    "lastName" => array("error" => false, "msg"=> ""),
    "style" => array("error" => false, "msg"=> ""),
    "pwd" => array("error" => false, "msg"=> "")
);


<script  type="text/javascript">
    var settings = JSON.parse(JSON.stringify(<?php echo json_encode($settingsArray) ?>));
    alert(settings); 
    alert(settings.genSettings);
    alert(settings['genSettings']); 
</script>

输出是所有警报返回 [object Object]

我尝试了以下方法:

var settings = JSON.parse(&lt;?php echo json_encode($settingsArray) ?&gt;); 返回 SyntaxError: Unexpected token o in JSON at position 1 -> [对象对象]

var settings = &lt;?php echo json_encode($settingsArray) ?&gt;; 全部 返回 [object 对象]

使用 JSON.stringify

var settings= JSON.stringify(<?php echo json_encode($settingsArray) ?>);
alert(settings); 
alert(settings.genSettings);
alert(settings['genSettings']);

第一个警报返回:

{"genSettings":{"userName":{"error":false,"msg":""},"email":{"error":false,"msg":""},"firstName":{"error":false,"msg":""},"lastName":{"error":false,"msg":""},"style":{"error":false,"msg":""},"pwd":{"error":false,"msg":""}},"settings":[]} 

虽然其余的返回未定义,但我仍然无法在 JavaScript 中获取单个值 settingsArray.genSettings.userNamesettingsArray['genSettings']['userName'] 等等。正如我第一次尝试看到的那样,我 JSON.parse JSON.stringify(&lt;?php echo json_encode($settingsArray)?&gt;) 并返回 [object Object]

有谁知道我在 javascript 中做错了什么。提前谢谢!

【问题讨论】:

    标签: javascript php arrays json multidimensional-array


    【解决方案1】:

    要打印整个对象,请仅使用stringify。要在其中打印其他内容,请重新解析 JSON 并将您需要打印的内容字符串化:

    var settings = JSON.stringify(<?php echo json_encode($settingsArray) ?>);
    alert(settings); 
    
    settings = JSON.parse(settings); // Required to access objects inside
    
    alert(JSON.stringify(settings.genSettings)); // Stringify what you access to read it
    alert(JSON.stringify(settings['genSettings'])); 
    

    【讨论】:

    • 有没有一种方法,每次我想读取值时都不需要使用 JSON.stringify()?
    • @Brandon No. Stringify 是必需的。你有什么不能使用它的原因吗?
    • 不,只是认为这可能是多余的,因为我会一次多次调用不同的值,希望可以只做 settings.genSettings.userName.error。谢谢你,不过正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2023-03-27
    • 2016-05-29
    • 1970-01-01
    • 2011-08-16
    • 2015-04-10
    相关资源
    最近更新 更多