php的$_POST['name']获取jquery的post方法传递过来的数据一直为空,搞了好几天都疯了

mnz119 2016-03-06 01:12:00
首先代码没有语法错误,先放代码:一个两个文件,一个是前台的index.html,一个是后台的.php文件,前台基于juqery的ajax技术访问后台的php,有参数传递到后台,后台也返回参数到前台。
一开始用ajax方法出现这样的问题,现在用post方法还是出现这样的问题


一、index.html文件

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.post("Return_latest_position_data.php",
{
name:"kunge" ,
city:"shenzhen"
},
function(data,status){
//输出json对象
$("#position_data_show").html("当前返回姓名:"+data.name0+"返回的城市"+data.city0);
// 输出json对象转换成的字符串
var str=JSON.stringify(data);
$("#json_to_str_show").html("转换为字符串后的json为"+str);


}, "json");
});
});
</script>
</head>
<body>

<button>向页面发送 HTTP POST 请求,并获得返回的结果</button>

<div id="position_data_show"></div>
<div id="json_to_str_show"></div>


</body>
</html>

二、Return_latest_position_data.php文件

<?php
$name=$_POST['name'];//====通过POST方式获取的参数
$city=$_POST['city'];//====通过POST方式获取的参数


$latest_position_data_arry = array(
'name0' => $name,
'city0' => $city);
;
echo json_encode($latest_position_data_arry);

?>

//======================================
上述代码已经放在了LAMP框架系统下面,能够用浏览器访问了
基于以上代码,出现百思不得其解的问题
用浏览器打开Return_latest_position_data.php(出现是图1的结果)
用浏览器打开index.html(得到图2的结果)
图2的结果是从后台服务器返回过来,说明data的两个参数已经传递到后台了,
可是为啥后台输出的确实为null呢,通过echo $_POST查看任何一个参数也是为空。
可是为空为啥在前台代码里面无论是通过json对象形式还是通过json的字符串形式(已经转换)都可以访问到name和city这个变量呢。真的很奇怪,我其实是想利用前台传递到后台的name和city做进一步处理,但是$_POST获取不到任何东西,根本没法处理,请问各位有没有遇到类似诡异的问题。万分感激啊,小弟水平比较菜。
...全文
904 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mnz119 2016-03-07
  • 打赏
  • 举报
回复
通过问在腾讯上班的朋友,朋友很快找出了原因,帮解决了,版主也给了一些提示吧,其实程序没问题,刚开始学不到一个月,对前后台参数传递和访问机制理解不透彻,后台的$_POST在每次访问后都会清零,直接访问当然是为null 要想echo输出,.可以这样实现:前台直接通过 <form action="Return_latest_position_data.php" method="post"> 姓名:<input type="text" name="name"><br> 电邮:<input type="text" name="city"><br> <input type="submit"> </form> 但这种方式整个前台页面都会跳转到后台PHP,也不属于ajax前后异步通信技术了。
  • 打赏
  • 举报
回复
引用 8 楼 mnz119 的回复:
通过问在腾讯上班的朋友,朋友很快找出了原因,帮解决了,版主也给了一些提示吧,其实程序没问题,刚开始学不到一个月,对前后台参数传递和访问机制理解不透彻,后台的$_POST在每次访问后都会清零,直接访问当然是为null 要想echo输出,.可以这样实现:前台直接通过 <form action="Return_latest_position_data.php" method="post"> 姓名:<input type="text" name="name"><br> 电邮:<input type="text" name="city"><br> <input type="submit"> </form> 但这种方式整个前台页面都会跳转到后台PHP,也不属于ajax前后异步通信技术了。
你这样是提交表单了,如果name和city输入了值action的页面也能获取到,和ajax和普通表单提交没关系,ajax只是无刷新提交而已,给submit绑定click时要注意最后return false阻止表单提交
mnz119 2016-03-06
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
[quote=引用 3 楼 mnz119 的回复:] [quote=引用 2 楼 showbo 的回复:] 图二你ajax不是已经得到name和city了,你想问什么了?
1、我如何在php文件中得到字符串的city和name,让它们作为参数在PHP中进行处理 2、在php中为啥通过echo $name得到的是null,为啥结果不是"shenzhen"?我该如何处理[/quote] 你图二不是已经得到值了,哪来的null。。图一你直接访问肯定是null了,没有传递参数那不是null是什么。。[/quote]
引用 5 楼 showbo 的回复:
[quote=引用 3 楼 mnz119 的回复:] [quote=引用 2 楼 showbo 的回复:] 图二你ajax不是已经得到name和city了,你想问什么了?
1、我如何在php文件中得到字符串的city和name,让它们作为参数在PHP中进行处理 2、在php中为啥通过echo $name得到的是null,为啥结果不是"shenzhen"?我该如何处理[/quote] 你图二不是已经得到值了,哪来的null。。图一你直接访问肯定是null了,没有传递参数那不是null是什么。。[/quote]
引用 5 楼 showbo 的回复:
[quote=引用 3 楼 mnz119 的回复:] [quote=引用 2 楼 showbo 的回复:] 图二你ajax不是已经得到name和city了,你想问什么了?
1、我如何在php文件中得到字符串的city和name,让它们作为参数在PHP中进行处理 2、在php中为啥通过echo $name得到的是null,为啥结果不是"shenzhen"?我该如何处理[/quote] 你图二不是已经得到值了,哪来的null。。图一你直接访问肯定是null了,没有传递参数那不是null是什么。。[/quote] 版主大师,可能您还不明白我的意思吗,index.html文档里面的不是传递了参数吗?请看: $.post("Return_latest_position_data.php", { name:"kunge" , city:"shenzhen" }, 那后台php应该通过$_POST['name']接收应该是"kunge"吧,可是通过echo $name 啥都没输出?,这个怎么解析呢?然后通过 对name,city转换为json对象: $latest_position_data_arry = array( 'name0' => $name, 'city0' => $city); ; echo json_encode($latest_position_data_arry); 输出为啥是:name0":"null","city0":null},按理来说如果$name有值的话,应该是输出: name0":"kunge","city0":city}啊 麻烦版主大师在细看下代码,谢谢啦
mnz119 2016-03-06
  • 打赏
  • 举报
回复
虽然通过json对象能够诡异的传递到前端,但是假如我在php文件中将name和city的值作为sql语句查询数据库呢,都没法通过$_POST获取前台的name和city怎么查询呀。
  • 打赏
  • 举报
回复
引用 3 楼 mnz119 的回复:
[quote=引用 2 楼 showbo 的回复:] 图二你ajax不是已经得到name和city了,你想问什么了?
1、我如何在php文件中得到字符串的city和name,让它们作为参数在PHP中进行处理 2、在php中为啥通过echo $name得到的是null,为啥结果不是"shenzhen"?我该如何处理[/quote] 你图二不是已经得到值了,哪来的null。。图一你直接访问肯定是null了,没有传递参数那不是null是什么。。
mnz119 2016-03-06
  • 打赏
  • 举报
回复
apache服务器是在阿里云的linux下面,不过应该跟这个无关吧,好诡异啊,顶起,解决必给分。
mnz119 2016-03-06
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
图二你ajax不是已经得到name和city了,你想问什么了?
1、我如何在php文件中得到字符串的city和name,让它们作为参数在PHP中进行处理 2、在php中为啥通过echo $name得到的是null,为啥结果不是"shenzhen"?我该如何处理
  • 打赏
  • 举报
回复
图二你ajax不是已经得到name和city了,你想问什么了?
mnz119 2016-03-06
  • 打赏
  • 举报
回复


漏传了两张图

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧