首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript从POST方法传递的JSON中获取数据

使用javascript从POST方法传递的JSON中获取数据
EN

Stack Overflow用户
提问于 2016-11-03 14:57:40
回答 2查看 31关注 0票数 0

问题是,当我的PHP文件获取通过方法post发送的数据时,会读取:

代码语言:javascript
复制
$play=$_POST['players'];

结果是:

代码语言:javascript
复制
"[{'type_player': 'Hombres Bestia' ,'mo': 6, 'st': 3, 'de': 3, 'ar': 8, 'N': 'FGM' , 'D': 'AP' , 'price': 60000, 'habs': [20], 'max_number': 16 }, {'type_player': 'Guerreros del Caos' ,'mo': 5, 'st': 4, 'de': 3, 'ar': 9, 'N': 'FGM' , 'D': 'AP' , 'price': 100000, 'habs': [], 'max_number': 4 }, {'type_player': 'Minotauro' ,'mo': 5, 'st': 5, 'de': 2, 'ar': 8, 'N': 'FM' , 'D': 'AGP' , 'price': 150000, 'habs': [3,15,20,32,34,71], 'max_number': 1 }, {'type_player': 'qwe' ,'mo': 2, 'st': 3, 'de': 4, 'ar': 5, 'N': 'P' , 'D': 'M' , 'price': 132, 'habs': [0], 'max_number': 2 }]"

当我json_decode的时候,

代码语言:javascript
复制
$players=json_decode($play,true);

它返回:

代码语言:javascript
复制
[{'type_player': 'Hombres Bestia' ,'mo': 6, 'st': 3, 'de': 3, 'ar': 8, 'N': 'FGM' , 'D': 'AP' , 'price': 60000, 'habs': [20], 'max_number': 16 }, {'type_player': 'Guerreros del Caos' ,'mo': 5, 'st': 4, 'de': 3, 'ar': 9, 'N': 'FGM' , 'D': 'AP' , 'price': 100000, 'habs': [], 'max_number': 4 }, {'type_player': 'Minotauro' ,'mo': 5, 'st': 5, 'de': 2, 'ar': 8, 'N': 'FM' , 'D': 'AGP' , 'price': 150000, 'habs': [3,15,20,32,34,71], 'max_number': 1 }, {'type_player': 'qwe' ,'mo': 2, 'st': 3, 'de': 4, 'ar': 5, 'N': 'P' , 'D': 'M' , 'price': 132, 'habs': [0], 'max_number': 2 }] 

问题是,当我试图在php中获取任何东西时,我都无法获取。例如:

代码语言:javascript
复制
echo "mo:".$players[0]['mo'];

它返回:

代码语言:javascript
复制
mo:[

有什么帮助吗?

正如您所建议的,我已经更改了发送数据的方式,现在当我使用$_POST时,它会返回:

"[{\"type_player\": \"Hombres Bestia\" ,\"mo\": 6, \"st\": 3, \"de\": 3, \"ar\": 8, \"N\": \"FGM\" , \"D\": \"AP\" , \"price\": 60000, \"habs\": [20], \"max_number\": 16 }, {\"type_player\": \"Guerreros del Caos\" ,\"mo\": 5, \"st\": 4, \"de\": 3, \"ar\": 9, \"N\": \"FGM\" , \"D\": \"AP\" , \"price\": 100000, \"habs\": [], \"max_number\": 4 }, {\"type_player\": \"Minotauro\" ,\"mo\": 5, \"st\": 5, \"de\": 2, \"ar\": 8, \"N\": \"FM\" , \"D\": \"AGP\" , \"price\": 150000, \"habs\": [3,15,20,32,34,71], \"max_number\": 1 }, {\"type_player\": \"qdwqw\" ,\"mo\": 2, \"st\": 2, \"de\": 2, \"ar\": 1, \"N\": \"P\" , \"D\": \"F\" , \"price\": 13244, \"habs\": [0], \"max_number\": 1 }]"

我解码它,它返回:

代码语言:javascript
复制
[{"type_player": "Hombres Bestia" ,"mo": 6, "st": 3, "de": 3, "ar": 8, "N": "FGM" , "D": "AP" , "price": 60000, "habs": [20], "max_number": 16 }, {"type_player": "Guerreros del Caos" ,"mo": 5, "st": 4, "de": 3, "ar": 9, "N": "FGM" , "D": "AP" , "price": 100000, "habs": [], "max_number": 4 }, {"type_player": "Minotauro" ,"mo": 5, "st": 5, "de": 2, "ar": 8, "N": "FM" , "D": "AGP" , "price": 150000, "habs": [3,15,20,32,34,71], "max_number": 1 }, {"type_player": "qdwqw" ,"mo": 2, "st": 2, "de": 2, "ar": 1, "N": "P" , "D": "F" , "price": 13244, "habs": [0], "max_number": 1 }] 

现在,它应该可以工作,但当我尝试获取数据时,结果是相同的……进一步的答案?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-03 15:07:28

您的json无效,因为json值用双引号括起来,而不是单引号

注意:字符串应该用双引号括起来。

代码语言:javascript
复制
    <?php

    $play='[{"type_player": "Hombres Bestia" ,"mo": 6, "st": 3, "de": 3, "ar": 8, "N": "FGM" , "D": "AP" , "price": 60000, "habs": [20], "max_number": 16 }, {"type_player": "Guerreros del Caos" ,"mo": 5, "st": 4, "de": 3, "ar": 9, "N": "FGM" , "D": "AP" , "price": 100000, "habs": [], "max_number": 4 }, {"type_player": "Minotauro" ,"mo": 5, "st": 5, "de": 2, "ar": 8, "N": "FM" , "D": "AGP" , "price": 150000, "habs": [3,15,20,32,34,71], "max_number": 1 }, {"type_player": "qwe" ,"mo": 2, "st": 3, "de": 4, "ar": 5, "N": "P" , "D": "M" , "price": 132, "habs": [0], "max_number": 2 }]';

    $players=json_decode($play,true);

    echo "<pre>";
    print_r($players);

    echo $players[0]['mo'];

    ?>

输出:

代码语言:javascript
复制
        Array
    (
        [0] => Array
            (
                [type_player] => Hombres Bestia
                [mo] => 6
                [st] => 3
                [de] => 3
                [ar] => 8
                [N] => FGM
                [D] => AP
                [price] => 60000
                [habs] => Array
                    (
                        [0] => 20
                    )

                [max_number] => 16
            )

        [1] => Array
            (
                [type_player] => Guerreros del Caos
                [mo] => 5
                [st] => 4
                [de] => 3
                [ar] => 9
                [N] => FGM
                [D] => AP
                [price] => 100000
                [habs] => Array
                    (
                    )

                [max_number] => 4
            )

        [2] => Array
            (
                [type_player] => Minotauro
                [mo] => 5
                [st] => 5
                [de] => 2
                [ar] => 8
                [N] => FM
                [D] => AGP
                [price] => 150000
                [habs] => Array
                    (
                        [0] => 3
                        [1] => 15
                        [2] => 20
                        [3] => 32
                        [4] => 34
                        [5] => 71
                    )

                [max_number] => 1
            )

        [3] => Array
            (
                [type_player] => qwe
                [mo] => 2
                [st] => 3
                [de] => 4
                [ar] => 5
                [N] => P
                [D] => M
                [price] => 132
                [habs] => Array
                    (
                        [0] => 0
                    )

                [max_number] => 2
            )

    )

    6

更新2:

您只需复制粘贴以下链接中的代码即可看到正确的解决方案http://phpfiddle.org/

代码语言:javascript
复制
        <?php
        $play="[{\"type_player\": \"Hombres Bestia\" ,\"mo\": 6, \"st\": 3, \"de\": 3, \"ar\": 8, \"N\": \"FGM\" , \"D\": \"AP\" , \"price\": 60000, \"habs\": [20], \"max_number\": 16 }, {\"type_player\": \"Guerreros del Caos\" ,\"mo\": 5, \"st\": 4, \"de\": 3, \"ar\": 9, \"N\": \"FGM\" , \"D\": \"AP\" , \"price\": 100000, \"habs\": [], \"max_number\": 4 }, {\"type_player\": \"Minotauro\" ,\"mo\": 5, \"st\": 5, \"de\": 2, \"ar\": 8, \"N\": \"FM\" , \"D\": \"AGP\" , \"price\": 150000, \"habs\": [3,15,20,32,34,71], \"max_number\": 1 }, {\"type_player\": \"qdwqw\" ,\"mo\": 2, \"st\": 2, \"de\": 2, \"ar\": 1, \"N\": \"P\" , \"D\": \"F\" , \"price\": 13244, \"habs\": [0], \"max_number\": 1 }]";


        $players=json_decode($play,true);

        echo "<pre>";
        print_r($players);

        ?>
票数 0
EN

Stack Overflow用户

发布于 2016-11-03 15:38:51

尝试一下,它会起作用:

JSON表示法是用double quotes.As编写的,JSON data exchange format确实需要用双引号将标识符括起来。

代码语言:javascript
复制
<?php
$play = '[
  { 
    "type_player": "Hombres Bestia" ,
    "mo": 6, 
    "st": 3, 
    "de": 3, 
    "ar": 8, 
    "N": "FGM" , 
    "D": "AP" , 
    "price": 60000, 
    "habs": [20], 
    "max_number": 16 
  },
  {
    "type_player": "Guerreros del Caos" ,
    "mo": 5, 
    "st": 4, 
    "de": 3, 
    "ar": 9, 
    "N": "FGM" , 
    "D": "AP" , 
    "price": 100000, 
    "habs": [], "max_number": 4 
  },
  { 
    "type_player": "Minotauro" ,
    "mo": 5, 
    "st": 5, 
    "de": 2, 
    "ar": 8, 
    "N": "FM" , 
    "D": "AGP" , 
    "price": 150000, 
    "habs": [3,15,20,32,34,71], 
    "max_number": 1 
  }, 
  {
    "type_player": "qwe" ,
    "mo": 2, 
    "st": 3, 
    "de": 4, 
    "ar": 5, 
    "N": "P" , 
    "D": "M" , 
    "price": 132, 
    "habs": [0], 
    "max_number": 2 
    }
]';

$players = json_decode($play,true);

echo $players[0]['mo'];

?>

6输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40395524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档