JSON Post和Decode数组到PHP

时间:2013-08-21 10:10:31

标签: php jquery json

我想使用JSON将数组发布到PHP文件。这是行不通的。问题是没有任何反应。如果我退出数据类型:“json”然后我得到警报(但没有数据)。

这是我的jquery代码

var arr = new Array();
arr.push('1','Brussels|25');
arr.push('2','Antwerp|40');
$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "jsondecode.php",
  data: JSON.stringify(arr),
  dataType: "json",
  success: function(data){alert(data);},
  failure: function(errMsg) {
    alert(errMsg);
  }
});

这是我的PHP代码(jsondecode.php);

 <?php
 $array = json_decode($_POST["arr"]);
 foreach($array as $el){
    $el_array=explode('|',$el);
    echo"City=".$el_array[0]." And Age = ".$el_array[1]."";
 }

 ?>

有人知道一个有用的教程吗?

4 个答案:

答案 0 :(得分:4)

您必须以此格式发布数据,以便像$_POST["arr"]

一样进行检索
data: { arr : JSON.stringify(arr) },

答案 1 :(得分:3)

你到底在想什么? 看起来好像是在试图将键值对放在{-1}}的JavaScript-Array中,期望在键“1”下包含“Brussels | 25”的数组 - 但要小心,你要创建这个数组:arr.push('1', 'Brussels|25');

如果要发送json,请发送json-data:

["1", "Brussels|25", "2", "Antwerp|40"]

然后你的ajax电话:

var arr= [{  
    "city" : "Brussels",  
    "age" : 25  
},{  
    "city" : "Antwerp",  
    "age" : 40  
}];  

因此,您无需爆炸数据服务器端。

服务器端脚本:

$.ajax({
   type: "POST",
   url: "jsondecode.php",
   data: {arr: JSON.stringify(arr)},
   success: function(data){
        console.log("success:",data);},
   failure: function(errMsg) {
        console.error("error:",errMsg);
   }
});

希望,这对你有帮助。

@edit:顺便说一下,使用<?php $data = json_decode($_POST["arr"]); // will echo the JSON.stringified - string: echo $_POST["arr"]; // will echo the json_decode'd object var_dump($data); //traversing the whole object and accessing properties: foreach($data as $cityObject){ echo "City: " . $cityObject->city . ", Age: " . $cityObject->age . "<br/>"; } ?> console.log()代替警报。警报将导致脚本暂停,直到您单击确定并且您无法在警报中看到对象。

@ 2nd edit:脚本现在已经过测试,我删除了不必要的代码并添加了服务器端代码

答案 2 :(得分:1)

替换:

$array = json_decode($_POST["arr"]);

人:

 $array = json_decode($_POST["arr"], true);

答案 3 :(得分:0)

为我工作:

JS:

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "jsondecode.php",
    data: JSON.stringify({"1": "Brussels", "2": "Antwerp"}),
    success: function(data){alert(data);},
    failure: function(errMsg) {
        alert(errMsg);
    }
});

PHP:

<?php
$p = file_get_contents('php://input');
$x = json_decode($p, true);
echo $x["1"];
?>