【问题标题】:How can I use PHP array or json response in javascript?如何在 javascript 中使用 PHP 数组或 json 响应?
【发布时间】:2015-07-21 13:19:08
【问题描述】:

让我简要介绍一下我的流程。

当我从 index.phtml 文件调用 Ajax 时,ajax 会返回此响应。

Array
(
    [Data] => Array
        (
            [0] => Array
                (
                    [PlayerId] => 201503261611120312176355026
                    [PlayerName] => Leonel Messi
                    [PlayerPossition] => Striker
                    [PlayerPrice] => 15
                    [PlayerNationality] => Argentina
                    [ImageUrl] => messi.jpg
                )

            [1] => Array
                (
                    [PlayerId] => 2015040711252904291525683176
                    [PlayerName] => Simon Mignolet
                    [PlayerPossition] => Goalkeeper
                    [PlayerPrice] => 12
                    [PlayerNationality] => Belgium
                    [ImageUrl] => Mignolet.jpg
                )

            [2] => Array
                (
                    [PlayerId] => 201503301517200320707502096
                    [PlayerName] => Petr Cech
                    [PlayerPossition] => Goalkeeper
                    [PlayerPrice] => 10
                    [PlayerNationality] => czech Republic
                    [ImageUrl] => Petr.jpg
                )
)

这是因为当我调用 API 时,它给了我这样的 json 字符串,我正在对其进行解码,因此我们将得到上述输出。

{"Data":[{"PlayerId":"201503261611120312176355026","PlayerName":"Leonel Messi","PlayerPossition":"Striker","PlayerPrice":"15","PlayerNationality":"Argentina","ImageUrl":"messi.jpg"},
         {"PlayerId":"2015040711252904291525683176","PlayerName":"Simon Mignolet","PlayerPossition":"Goalkeeper","PlayerPrice":"12","PlayerNationality":"Belgium","ImageUrl":"Mignolet.jpg"},
         {"PlayerId":"201503301517200320707502096","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"}]
}

最后我的问题是什么。

  1. 我想在 javascript 中使用 API 的响应作为数组,所以我正在对来自 api 的字符串执行 json_decode,我应该将字符串或 ket 解码为 json 字符串以便在 javascript 中进一步使用?是的,那么我怎样才能将 javascript 中的 json 字符串用作数组?

  2. 如果没有,我该如何使用上面在 javascript 中显示的 PHP 数组作为数组?

需要帮助! 它只需要如何使用它的指导,我已经看到了很多关于这个主题的问题,但没有正确理解。

这是完整的回复..

{"Data":[{"PlayerId":"201503261611120312176355026","PlayerName":"Leonel Messi","PlayerPossition":"Striker","PlayerPrice":"15","PlayerNationality":"Argentina","ImageUrl":"messi.jpg"},{"PlayerId":"2015040711252904291525683176","PlayerName":"Simon Mignolet","PlayerPossition":"Goalkeeper","PlayerPrice":"12","PlayerNationality":"Belgium","ImageUrl":"Mignolet.jpg"},{"PlayerId":"201503301517200320707502096","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"},{"PlayerId":"2015040711263304331239304618","PlayerName":"Mario Balotelli","PlayerPossition":"Forward","PlayerPrice":"13","PlayerNationality":"Italy","ImageUrl":"Mario.jpg"},{"PlayerId":"2015040711153004301142178636","PlayerName":"John Terry","PlayerPossition":"Defender","PlayerPrice":"15","PlayerNationality":"England","ImageUrl":"Terry.jpg"},{"PlayerId":"2015033015173503352044674486","PlayerName":"Wayne Rooney","PlayerPossition":"Striker","PlayerPrice":"12","PlayerNationality":"England","ImageUrl":"Rooney.jpeg"},{"PlayerId":"2015040711274604461644280531","PlayerName":"Glen Johnson","PlayerPossition":"Defender","PlayerPrice":"12","PlayerNationality":"England","ImageUrl":"Johnson.jpg"},{"PlayerId":"201504071121180418898562745","PlayerName":"Wojciech Szczesny","PlayerPossition":"Goalkeeper","PlayerPrice":"12","PlayerNationality":"Poland","ImageUrl":"Szczesny.jpg"},{"PlayerId":"201504071121500450766284368","PlayerName":"Theo Walcott","PlayerPossition":"Forward","PlayerPrice":"13","PlayerNationality":"England","ImageUrl":"Walcott.jpg"},{"PlayerId":"0","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"},{"PlayerId":"201504101708340434430387485","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"},{"PlayerId":"2015032616092803281211739999","PlayerName":"Leonel Messi","PlayerPossition":"Striker","PlayerPrice":"15","PlayerNationality":"Argentina","ImageUrl":"messi.jpg"},{"PlayerId":"2015040711193204321670945005","PlayerName":"onny Evans","PlayerPossition":"Defender","PlayerPrice":"11","PlayerNationality":"England","ImageUrl":"Evans.jpg"},{"PlayerId":"201503311244410341392250417","PlayerName":"Diego Costa","PlayerPossition":"Striker","PlayerPrice":"10","PlayerNationality":"Span","ImageUrl":"diego.jpg"},{"PlayerId":"2015040711181504151664744966","PlayerName":"Wayne Rooney","PlayerPossition":"Forward","PlayerPrice":"15","PlayerNationality":"England","ImageUrl":"Rooney.jpg"},{"PlayerId":"201504071117260426381135053","PlayerName":"David de Gea","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"Spain","ImageUrl":"David.jpg"},{"PlayerId":"2015040711224104411470384753","PlayerName":"Tomas Rosicky","PlayerPossition":"Midfielder","PlayerPrice":"12","PlayerNationality":"czech Republic","ImageUrl":"Rosicky.jpg"},{"PlayerId":"2015040711270704071555972375","PlayerName":"Steven Gerrard","PlayerPossition":"Midfielder","PlayerPrice":"15","PlayerNationality":"England","ImageUrl":"Gerrard.jpg"},{"PlayerId":"2015033112335503551596743050","PlayerName":"Diego Costa","PlayerPossition":"Striker","PlayerPrice":"10","PlayerNationality":"Brazil","ImageUrl":"diego.jpg"},{"PlayerId":"2015040711145204521635036421","PlayerName":"John Obi Mikel","PlayerPossition":"Midfielder","PlayerPrice":"11","PlayerNationality":"Nigeria","ImageUrl":"John.jpg"},{"PlayerId":"2015040711141204121342616372","PlayerName":"Didier Drogba","PlayerPossition":"Forward","PlayerPrice":"12","PlayerNationality":"C\u00f4te d\u2019Ivoire","ImageUrl":"Didier.jpg"},{"PlayerId":"201504071118430443104059381","PlayerName":"Michael Carrick","PlayerPossition":"Midfielder","PlayerPrice":"12","PlayerNationality":"England","ImageUrl":"Carrick.jpg"},{"PlayerId":"201504091258150415433179519","PlayerName":"Petr Cech1","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"},{"PlayerId":"201504071123160416447868423","PlayerName":"Laurent Koscielny","PlayerPossition":"Defender","PlayerPrice":"12","PlayerNationality":"France","ImageUrl":"Koscielny.jpg"},{"PlayerId":"20150407111123042372799765","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"}],"requestId":"1"}

这是错误图像..

我的js

$(document).ready(function () {
                        $.ajax({
                            url: '/home/getPlayers',
                            success: function (data) {
                                showPlayers(data);
                            }

                        });

                        function showPlayers(data) {

                            console.log(data);
                            data = JSON.parse(data);

                            console.log(data);
                        }
                    });

【问题讨论】:

  • 如果你想让你的 javascript 使用那个 JSON 字符串,那么你根本不需要解码它
  • 那么我如何使用该 json 字符串作为我尝试使用 data.Data,data['Data'] 的数组,其中 datais var 和 'Data is the first key'。但它不起作用
  • 查看文章:api.jquery.com/jquery.parsejson 它采用 json 字符串并将其解析为数组,然后您可以查看该数组值。
  • @Daedalus 表示数据是一个键,它有数组
  • 在做JSON.parse(json);之后我在做data.Data[0]它给了我对象但问题是一个错误Uncaught SyntaxError: Unexpected token u这背后的原因是什么?

标签: javascript php arrays ajax json


【解决方案1】:

您可以使用JSON.parse(json); 将其转换为对象,使用该对象! :)

这是一个演示,向您展示它返回的内容:http://jsfiddle.net/Lekmnxzb/

【讨论】:

  • 我已经这样做了,但我遇到了这个错误Uncaught SyntaxError: Unexpected token u
  • 我做个测试,你可以看看上面这个给的链接! (在您的开发者工具中)
  • 没有正确输出json没有错误
  • 是的,您的输出 json 中有错误。我只是在最后一个右大括号 } 之前添加 ]
  • 所以你应该检查生成你的json文件的代码!
【解决方案2】:

获取你的 JavaScript 变量

var obj = {"Data":[{"PlayerId":"201503261611120312176355026","PlayerName":"Leonel Messi","PlayerPossition":"Striker","PlayerPrice":"15","PlayerNationality":"Argentina","ImageUrl":"messi.jpg"},{"PlayerId":"2015040711252904291525683176","PlayerName":"Simon Mignolet","PlayerPossition":"Goalkeeper","PlayerPrice":"12","PlayerNationality":"Belgium","ImageUrl":"Mignolet.jpg"},{"PlayerId":"201503301517200320707502096","PlayerName":"Petr Cech","PlayerPossition":"Goalkeeper","PlayerPrice":"10","PlayerNationality":"czech Republic","ImageUrl":"Petr.jpg"}]}

现在您可以访问这样的元素,例如:

obj.Data[0].PlayerId

要解析或创建 JSON 字符串,有以下两个函数:

JSON.parse()
JSON.strigify()

【讨论】:

  • 实际上我所做的是我调用了一个 Ajax,在它的成功函数中我调用了另一个函数 showData(),我已经将成功函数的响应传递给了该函数中的 showData()我显示 data.Data[0];it not working undefined 0 error 但是当我在做 JSON.parase() 并打印 data.Data 它给了我对象但错误也在那里Uncaught SyntaxError: Unexpected token u
  • @BhavikJoshi 我们看不到您的屏幕,除非您回读我告诉您要查找的内容,否则我们无法为您提供进一步帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多