【问题标题】:How can I work with arrays fetched thru AJAX once?如何处理通过 AJAX 一次获取的数组?
【发布时间】:2017-05-16 20:49:18
【问题描述】:

我正在创建一个网站,用户可以在其中移动一些滑块以动态获得不同的结果。现在,在本地开发时,我正在监视每个滑块的“更新”状态,并使用 AJAX 从数据库中获取数据。我 100% 确定当网站上线时它不会是理想的,所以我想知道如何改进它,因此我的问题是:我可以在页面加载时进行一次 AJAX 调用以获取多个数据数组,然后映射结果数组作为javascript变量以某种方式?即使它不是异步的,因为它只会执行一次。

现在,在测试时,我从 AJAX 得到以下信息:

而PHP产生的数据如下:

Array
(
    [lamps] => Array
        (
            [0] => Array
                (
                    [lamp_id] => 1
                    [wattage] => 50
                    [lumens] => 6750
                    [price] => 1132.00
                )

            [1] => Array
                (
                    [lamp_id] => 2
                    [wattage] => 100
                    [lumens] => 13500
                    [price] => 2905.00
                )

            [2] => Array
                (
                    [lamp_id] => 3
                    [wattage] => 150
                    [lumens] => 13575
                    [price] => 4608.00
                )

            [3] => Array
                (
                    [lamp_id] => 4
                    [wattage] => 200
                    [lumens] => 18100
                    [price] => 5360.00
                )

        )

    [panels] => Array
        (
            [0] => Array
                (
                    [panel_id] => 1
                    [watts] => 260
                    [voltage] => 31.35
                    [price] => 4653.00
                )

        )

)

我知道如何处理来自 AJAX 的单个返回,但真的不知道如何处理数组,更不用说其中两个了……但我猜我可以以某种方式映射它们,这样我就可以按每个 [arrayname][arraykey] 调用 vars?

提前致谢!

【问题讨论】:

  • json_encode($theWholePHPDataStructure) 创建一个 JSON 字符串。回显到 AJAX 调用,它将自动成为一个 javascript 对象
  • 您调用了console.log(x) 来生成该输出。这意味着 x 已经是一个 JS 对象。灯具阵列为x.lamps,面板阵列为x.panel。仅此而已。
  • @T.J.Crowder 但我猜我可以以某种方式映射它们,这样我就可以通过每个 [arrayname][arraykey] 调用变量?
  • 我确信它是相关的。我会重新打开,因为你在抱怨,但我仍然确定这是解析 JSON 的问题
  • 当我说解析时,我的意思是解析和迭代 - 解析而不迭代 - 我发布的欺骗中的示例并不有趣

标签: javascript php jquery arrays ajax


【解决方案1】:

在 Javascript 中,对象 {} 可以这样访问:object.propertyobject[property],数组 [] 可以这样访问:array[index]

在您的示例中,要访问第一盏灯,您可以使用:Object.lamps[0].lamp_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多