12
回答
PHP 怎么接受$.post发送过来的值,测试了好久没都获取到,
最近做个登录,异步提交数据,就是用jq的$.post发送用户名和密码到php后台,但是发现php无论怎么都接受不到发送过来的值,确定其他都写对了的,没问题的,换个成GET发送到php服务端就可以获取就是换成post就获取不了,我是做登录的,总不能用get方式来登录吧。又不是用的https协议。非常蛋疼。请教各位大牛,PHP该怎么获取js提交过来的post数据。
PHP
举报
键盘浪人
发帖于4年前 12回/10K+阅
共有12个答案 最后回答: 3年前

HTML ajax端

$.ajax({
   url:'/login.php',
   data:{'name':name, 'pwd':pwd},
   type:'POST',
   dataType:'json',
   success:function(data){
      console.dir(data)
      if(data.status == '1')
         alert(data.mes)
      }else{
         alert(data.mes)
      }
   }
})

php端:

<?php

$sql = "SELECT * FROM user WHERE user = '{$_POST['name']}' AND pwd = '{$_POST['pwd']}'",

//后面大概就是查数据,看看有没有结果。

if(){
  echo json_encode(array('status' => '200', 'mes' => '登录成功'));
}else{
  echo json_encode(array('status' => '0', 'mes' => '帐号密码错误'));
}



一个流程大概就这样了。楼主肯定有地方写错~~

--- 共有 6 条评论 ---
键盘浪人回复 @首席撸破皮 : 谢谢,可以接受。我当时用的$.post()直接传递,在PHP接受不了post传过来的,但用$.get()就可以,用你的案例可以接受到,也就是说直接$.ajax可以接受。谢谢你的帮助。感谢 4年前 回复
zuiw回复 @键盘浪人 : 呵呵 看错了 4年前 回复
金拱门回复 @键盘浪人 : 上面的方法肯定可以接收的。如果接收不了,肯定是你写得有问题。这个方法我已经写了千百次。 4年前 回复
金拱门回复 @zuiw : ... datatype是将回调的数据解析。PHP端直接用POST接收则可。这个方法和 $.getJson一样 4年前 回复
zuiwjq是用的post方式提交的,但是提交的值是json格式的,获取的时候先要把json的转换成数组,直接$_POST['name'] 是不行的 4年前 回复

引用来自“首席撸破皮”的评论

HTML ajax端

$.ajax({
   url:'/login.php',
   data:{'name':name, 'pwd':pwd},
   type:'POST',
   dataType:'json',
   success:function(data){
      console.dir(data)
      if(data.status == '1')
         alert(data.mes)
      }else{
         alert(data.mes)
      }
   }
})

php端:

<?php

$sql = "SELECT * FROM user WHERE user = '{$_POST['name']}' AND pwd = '{$_POST['pwd']}'",

//后面大概就是查数据,看看有没有结果。

if(){
  echo json_encode(array('status' => '200', 'mes' => '登录成功'));
}else{
  echo json_encode(array('status' => '0', 'mes' => '帐号密码错误'));
}



一个流程大概就这样了。楼主肯定有地方写错~~

学习了

必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

首先要确保你传过去的是json数据格式,然后在php端进行打印看看

echo json_encode($_POST);

顶部