Bhavik Joshi
Bhavik Joshi

Reputation: 2677

How can I use PHP array or json response in javascript?

let me show you my flow briefly.

when I am calling an Ajax from the index.phtml file the ajax returns me this response.

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
                )
)

This is because of When I am calling an API it is giving me the json string like this and I am decoding it so we will get the above out put.

{"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"}]
}

Finally what is my questions are.

  1. I want to use the response of API in javascript as array so,I am doing json_decode on the string coming from the api,I should decode the string or ket as it is as a json String for further use in javascript?if yes then how can I use the json string in javascript as array?

  2. if no then how can I use the PHP array that I have shown above in javascript as array.?

Help is needed! It just need the guidance that how to use it, i have seen manny question on this topic but not getting it properly.

This is the full response..

{"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"}

This is the errorImage..

enter image description here

My 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);
                        }
                    });

Upvotes: 1

Views: 106

Answers (2)

Nippey
Nippey

Reputation: 4739

get your JavaScript variable with

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"}]}

Now you can access the elements like this for example:

obj.Data[0].PlayerId

To parse or create JSON strings, there are these two functions:

JSON.parse()
JSON.strigify()

Upvotes: 2

Radonirina Maminiaina
Radonirina Maminiaina

Reputation: 7004

You can use JSON.parse(json); to convert it into object, the use that object! :)

Here's a demo to show you what it returns: http://jsfiddle.net/Lekmnxzb/

Upvotes: 2

Related Questions