ajax传来的json数据,php如何解析

时间:2022-10-16 20:29:58
下面的测试代码不对,怎么改


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src='scripts/jquery-1.4.2.min.js' type='text/javascript'></script>
<title>Insert title here</title>
</head>
<body>
<script>
$.ajax({
type : "post",
url : "localhost/test/test_ajax.php",
dataType : "json",
data : {
test : "1"
},
success : function(D, E) {
alert(D.test);
},
error: function(C, D, E) {
alert('error');
}
})
</script>
</body>
</html>


test.php

<?php
$data = json_decode($_POST);
$json = '{"test":"'+$_POST->test+'"}';
echo $json;
?>

21 个解决方案

#1


php文件名没错,发帖的时候的笔误

#2


php 能用+连接吗?

用.连接

#3


php改了,还是不行

<?php
$data = json_decode($_POST);
$json = '{"test":"'.$data->test.'"}';
echo $json;
?>

#4


你可以先把后面的注释掉。看$data能在前台弹出吗? 

<?php
$data = json_decode($_POST);
echo $data;
//$json = '{"test":"'.$data->test.'"}';
//echo $json;
?>


 success : function(D, E) {   //此处两个返回值吗? 
               alert(D);  
              //alert(D.test);
            },

#5


不行
引用 4 楼 jordan102 的回复:
你可以先把后面的注释掉。看$data能在前台弹出吗? 
PHP code

<?php
$data = json_decode($_POST);
echo $data;
//$json = '{"test":"'.$data->test.'"}';
//echo $json;
?>



 success : function(D, E) {   //此处两个返回值吗? 
      ……

#6


先把dataType : "json",注释掉,然后看能不能弹出。

如果可以,这里的参数名称不要改动
success: function(data, textStatus){
    alert(data.test);
}

如果不行,再次检查返回的json是否合乎规范。

#7


有提示说json_decode()的参数需要是string
引用 6 楼 voteon83 的回复:

#8


$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#9


看1楼的html代码,我仿照一个商业网站客户端的写法
引用 8 楼 voteon83 的回复:
$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#10


json_decode 对字符串进行编码.你对个数组进行编码。你想他怎么运作?

引用 9 楼 ffxiangyu 的回复:
看1楼的html代码,我仿照一个商业网站客户端的写法
引用 8 楼 voteon83 的回复:

$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#11


注意看!

#12


这就是那个网站的客户端写法,我不知道服务器端是怎么写的
引用 11 楼 voteon83 的回复:
注意看!

#13


不管你怎么写 PHP有他的规范你就应该遵循。要不就自己写函数 是不是。

#14


引用 10 楼 phpnewnew 的回复:
json_decode 对字符串进行编码.你对个数组进行编码。你想他怎么运作?


这位兄弟说得对!

#15


本帖最后由 xuzuning 于 2011-09-21 07:07:23 编辑
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
<?php
echo json_encode($_POST);
就可通过测试

#16


惭愧惭愧 看了看标题 扫了扫他的代码,看到他写错的地方就回复了,以后回复仔细看帖子。咔咔

引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学精神却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
PHP code
<?php
echo json_encode($_POST);
就可通过测试

#17


引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
PHP code
<?php
echo json_encode($_POST);
就可通过测试
+1

#18


引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据


没人认为传json过去,你也没仔细看,哈哈

#19


1.首先你要了解,ajax传送数据  data:{ test : "1" , test2: "2" } 这个数据后台会得到什么。它其实是跟POST方式一样的,与下面方式一样
<form>
    <input type="text" name="test" value="1" />
    <input type="text" name="test2" value="2" />
</form>

2. dataType : "json" 表示,后台应该返回一段数据,这段数据应符合JSON的格式

将你的后台PHP代码改成下面的代码就可以通过测试
<?php
$testValue=$_POST["test"];  //这是data :{ test:"1" } 传过来的变量
?>
{
    "test":"<?php echo "the value of test is :".$testValue;  ?>"
}

#20


同求解答 我也遇到类似的问题

#21


引用 19 楼 sharp_ice 的回复:
1.首先你要了解,ajax传送数据 data:{ test : "1" , test2: "2" } 这个数据后台会得到什么。它其实是跟POST方式一样的,与下面方式一样
<form>
  <input type="text" name="test" value="1" />
  <input type="text" name="test2" value="2" />
</form>

……


我们现在也是这样的,如果楼主实在搞不清楚,建议把整个$_POST数组var_dump出来看一下就什么都清楚了,看看传过来的格式到底是数组还是json格式

#1


php文件名没错,发帖的时候的笔误

#2


php 能用+连接吗?

用.连接

#3


php改了,还是不行

<?php
$data = json_decode($_POST);
$json = '{"test":"'.$data->test.'"}';
echo $json;
?>

#4


你可以先把后面的注释掉。看$data能在前台弹出吗? 

<?php
$data = json_decode($_POST);
echo $data;
//$json = '{"test":"'.$data->test.'"}';
//echo $json;
?>


 success : function(D, E) {   //此处两个返回值吗? 
               alert(D);  
              //alert(D.test);
            },

#5


不行
引用 4 楼 jordan102 的回复:
你可以先把后面的注释掉。看$data能在前台弹出吗? 
PHP code

<?php
$data = json_decode($_POST);
echo $data;
//$json = '{"test":"'.$data->test.'"}';
//echo $json;
?>



 success : function(D, E) {   //此处两个返回值吗? 
      ……

#6


先把dataType : "json",注释掉,然后看能不能弹出。

如果可以,这里的参数名称不要改动
success: function(data, textStatus){
    alert(data.test);
}

如果不行,再次检查返回的json是否合乎规范。

#7


有提示说json_decode()的参数需要是string
引用 6 楼 voteon83 的回复:

#8


$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#9


看1楼的html代码,我仿照一个商业网站客户端的写法
引用 8 楼 voteon83 的回复:
$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#10


json_decode 对字符串进行编码.你对个数组进行编码。你想他怎么运作?

引用 9 楼 ffxiangyu 的回复:
看1楼的html代码,我仿照一个商业网站客户端的写法
引用 8 楼 voteon83 的回复:

$data = json_decode($_POST);

POST过来的是什么?你没写。$_POST['xxxx']

#11


注意看!

#12


这就是那个网站的客户端写法,我不知道服务器端是怎么写的
引用 11 楼 voteon83 的回复:
注意看!

#13


不管你怎么写 PHP有他的规范你就应该遵循。要不就自己写函数 是不是。

#14


引用 10 楼 phpnewnew 的回复:
json_decode 对字符串进行编码.你对个数组进行编码。你想他怎么运作?


这位兄弟说得对!

#15


本帖最后由 xuzuning 于 2011-09-21 07:07:23 编辑
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
<?php
echo json_encode($_POST);
就可通过测试

#16


惭愧惭愧 看了看标题 扫了扫他的代码,看到他写错的地方就回复了,以后回复仔细看帖子。咔咔

引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学精神却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
PHP code
<?php
echo json_encode($_POST);
就可通过测试

#17


引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据

服务器端写作
PHP code
<?php
echo json_encode($_POST);
就可通过测试
+1

#18


引用 15 楼 xuzuning 的回复:
楼上的大侠们:你们助人为乐的精神是值得嘉奖的,但你们的治学态度却实在不敢恭维

dataType : "json" 表示的是:服务器端将返回 json 格式的数据,而不是向服务器传送 json 数据


没人认为传json过去,你也没仔细看,哈哈

#19


1.首先你要了解,ajax传送数据  data:{ test : "1" , test2: "2" } 这个数据后台会得到什么。它其实是跟POST方式一样的,与下面方式一样
<form>
    <input type="text" name="test" value="1" />
    <input type="text" name="test2" value="2" />
</form>

2. dataType : "json" 表示,后台应该返回一段数据,这段数据应符合JSON的格式

将你的后台PHP代码改成下面的代码就可以通过测试
<?php
$testValue=$_POST["test"];  //这是data :{ test:"1" } 传过来的变量
?>
{
    "test":"<?php echo "the value of test is :".$testValue;  ?>"
}

#20


同求解答 我也遇到类似的问题

#21


引用 19 楼 sharp_ice 的回复:
1.首先你要了解,ajax传送数据 data:{ test : "1" , test2: "2" } 这个数据后台会得到什么。它其实是跟POST方式一样的,与下面方式一样
<form>
  <input type="text" name="test" value="1" />
  <input type="text" name="test2" value="2" />
</form>

……


我们现在也是这样的,如果楼主实在搞不清楚,建议把整个$_POST数组var_dump出来看一下就什么都清楚了,看看传过来的格式到底是数组还是json格式