2

我正在尝试使用 JSON 将数组发布到 PHP 文件。这没用。问题是什么都没有发生。如果我 decomment datatype:"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

4 回答 4

4

您必须以这种格式发布数据才能检索到$_POST["arr"]

data: { arr : JSON.stringify(arr) },
于 2013-08-21T10:13:00.210 回答
3

你到底在尝试什么?看起来好像您正试图将键值对放入 JavaScript 数组,并arr.push('1', 'Brussels|25');期望在键“1”下包含一个包含“Brussels|25”的数组 - 但请注意,您正在创建这个数组:["1", "Brussels|25", "2", "Antwerp|40"].

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

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

然后你的ajax调用:

$.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);
   }
});

所以你不需要在服务器端爆炸数据。

服务器端脚本:

<?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/>";
}
?>

希望,这对你现在有帮助。

@edit:顺便说一句,使用console.log()orconsole.error()代替警报。警报将导致脚本暂停,直到您单击确定并且您无法在警报中看到对象。

@第二次编辑:脚本现在已经过测试,我删除了不必要的代码并添加了服务器端代码

于 2013-08-21T10:42:06.277 回答
1

代替 :

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

经过:

 $array = json_decode($_POST["arr"], true);
于 2013-08-21T10:15:31.587 回答
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"];
?>
于 2017-08-03T05:34:37.600 回答