如何使用PHP解码Json数组(Ajax Json post到PHP不起作用)
我是php新手,我有一个基于jquery/javascript的应用程序,它包括查找附近的位置,并以排序顺序给出结果。我试图将排序功能从html页面分离到服务器端php 它涉及将ajax请求发送到http://thewebby.net16.net/SortJson.php 以json数组作为参数如何使用PHP解码Json数组(Ajax Json post到PHP不起作用),php,jquery,ajax,json,Php,Jquery,Ajax,Json,我是php新手,我有一个基于jquery/javascript的应用程序,它包括查找附近的位置,并以排序顺序给出结果。我试图将排序功能从html页面分离到服务器端php 它涉及将ajax请求发送到http://thewebby.net16.net/SortJson.php 以json数组作为参数 for ($row = 0; $row < sizeof($obj); $row++) { echo $obj[$row]['place']; } 它解析json请求并对其进行排序 基于这
for ($row = 0; $row < sizeof($obj); $row++) {
echo $obj[$row]['place'];
}
它解析json请求并对其进行排序
基于这些问题和答案
滑动分页
PHP
编辑:-
当使用$.post而不是$.ajax方法时,请求将被发送。但是在服务器端,php文件总是输入else,以防出现错误
if(isset($_POST['myData'])){..}
else{
echo "File Working";
}
如何在php中解析以下数据,我得到了无效的参数错误。传递的变量既不是对象也不是数组。我正在用$.Post而不是$.ajax更新网站中的代码
编辑2:-
var_转储的结果
对于此json输入
在文件开头使用此代码
<?php
$postdata = json_decode(file_get_contents("php://input"));
foreach($postdata as $key => $value){
$credentials[$key] = $value;
};
print_r($credentials) //should return you the php accessible array instead of object.//only for testing purpose
/*
You logic to check the database or anyother operation
*/
数据不是json编码的。它是@Quentin指出的格式编码的,所以我没有使用json迭代器,而是使用它,没有将其编码为json作为正常的post参数
for ($row = 0; $row < sizeof($obj); $row++) {
echo $obj[$row]['place'];
}
你为什么要解码两次?您需要显示触发请求的代码。@rjdown我对php非常陌生,我是一名java开发人员,我想将一些编码转移到服务器端并测试一些东西,所以只有自由域允许使用php,所以我在php上测试这是上面提到的第二个问答中的代码。您从未将数据编码为JSON。FormData的屏幕截图显示它是表单编码的,而不是JSON编码的。JSON与这些有什么关系?@Quentin但是控制台以JSON格式输出与我在这个问题中添加的相同的数据。我想做的是在php对这些数据排序,并在服务器上做一些事情side@Quentin如何将其设置为JSON格式?解析JSON格式请求的每个参数都无效。我们可以看到用于发出请求的代码:它不是JSON格式的。
if(isset($_POST['myData'])){..}
else{
echo "File Working";
}
array (
0 =>
array (
'place' => 'GreenPepper',
'Distance' => '0.487',
'Lat' => '8.52699',
'Lng' => '76.92419100000006',
),
1 =>
array (
'place' => 'BAKE \'N\' COOL',
'Distance' => '0.513',
'Lat' => '8.527908',
'Lng' => '76.92643599999997',
),
)
[{"place":"GreenPepper","Distance":0.487,"Lat":8.52699,"Lng":76.92419100000006},{"place":"BAKE 'N' COOL","Distance":0.513,"Lat":8.527908,"Lng":76.92643599999997}]
<?php
$postdata = json_decode(file_get_contents("php://input"));
foreach($postdata as $key => $value){
$credentials[$key] = $value;
};
print_r($credentials) //should return you the php accessible array instead of object.//only for testing purpose
/*
You logic to check the database or anyother operation
*/
for ($row = 0; $row < sizeof($obj); $row++) {
echo $obj[$row]['place'];
}