【问题标题】:JSON in Php not workingPHP中的JSON不起作用
【发布时间】:2015-11-26 14:44:10
【问题描述】:

我有一个问题,不知道是什么问题。我的 html 中有一个 javascript 变量。即:

  var people = '{"names": ["Matthew", "Lucas", "Todd", "Roxie", "Kyle", "Ken", "Gideon"], "surnames": ["Patel", "Lee", "Ingram", "Richter", "Katayanagi", "Katayanagi", "Graves"]}';

我在脚本中的一个函数上解析变量并使用它。一切正常。

var mydata = JSON.parse(people);

但是我需要将数据发送到一个 php 文件,我通过将数据写入隐藏输入来发送它。

 var strObject = JSON.stringify(mydata);


var replaced = strObject.replace(/\//g, '');


oFormObject = document.forms['theForm'];
oFormObject.elements["jsonData"].value = replaced;

之后我尝试在我的 decode.php 中使用:

$obj = $_POST['jsonData'];



json_decode($obj);
$s = stripslashes($obj);


var_dump($s); 

但是当我做一个 var_dump($s) 我得到这个输出:

string(147) "{"names":["Matthew","Lucas","Todd","Roxie","Kyle","Ken","Gideon"],"surnames":["Patel","Lee","Ingram","Richter","Katayanagi","Katayanagi","Graves"]}"

因此,我无法输出 $s 中的内容。任何建议。如果您需要更多信息,请告诉我。顺便说一句,这是一项家庭作业,我被最后一部分卡住了。

【问题讨论】:

  • json_decode 返回对象/数组。您需要将返回分配给变量,例如$jsOb = json_decode($obj)
  • 你需要获取从json_decode($obj)返回的json!
  • 你想从中得到名字姓氏对吗??
  • 这可能会对您有所帮助,stackoverflow.com/questions/15986235/… 您应该使用 html_entity_decode() 来检查答案

标签: javascript php json


【解决方案1】:

如果你正在寻找来自 json 的姓名对,你可以试试这个

$a = '{"names": ["Matthew", "Lucas", "Todd", "Roxie", "Kyle", "Ken", "Gideon"], "surnames": ["Patel", "Lee", "Ingram", "Richter", "Katayanagi", "Katayanagi", "Graves"]}';
    $b = json_decode($a);
    $c = $b->names;
    $d = $b->surnames;
    for ($i = 0;$i< count($b->names); $i++){
        echo $c[$i]." ". $d[$i] ."<br>";
    }

【讨论】:

  • 还是不行。当我尝试 $obj = json_decode($obj); $obj = stripslashes($obj); var_dump($obj);我仍然得到相同的输出
  • 不要使用stripslashes,并将var_dump() 替换为我提供的内容
  • 当我按照你的方式尝试时,没有任何输出。
  • 我可以给你我的 .php 和 .js 文件吗?它只有两个文件,测试一下,看看我做错了什么,因为我从字面上复制粘贴了你的代码,但它不起作用。
  • 不需要 js 文件。转到phpfiddle.org,选择初始代码,粘贴代码,runu可以看到输出。
【解决方案2】:

答案已经在 cmets 中,但由于这是答案,我只是将其作为答案发布。
您需要使用来自json_decode() 的返回值。 json_decode($obj) 本身不会改变变量$obj 的内容:

$obj = $_POST['jsonData'];
$obj = json_decode($obj);
$obj = stripslashes($obj);


var_dump($obj); 

【讨论】:

  • @niranjan,当我按照你的方式尝试时,没有任何输出。
【解决方案3】:

尝试将 json_decode($obj) 保存到一个变量和 var_dump 像

var $temp = json_decode($obj);
var_dump($temp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2020-03-27
    相关资源
    最近更新 更多