Heim >Backend-Entwicklung >PHP-Tutorial >ajax-返回值 - 在使用ajax时,为什么使用get可以在后台php页面中获得值,而post确不行?

ajax-返回值 - 在使用ajax时,为什么使用get可以在后台php页面中获得值,而post确不行?

WBOY
WBOYOriginal
2016-06-06 20:11:061253Durchsuche

  1. GET方式

<code>    document.getElementById("save").onclick=function(){
        var request=new XMLHttpRequest();
    request.open("GET","http://localhost/service.php?username="+document.getElementById("stuname").value+"&number="+document.getElementById("stunumber").value+"&sex="+document.getElementById("stusex").value+"&job="+document.getElementById("stujob").value);
            request.send(null);            
               request.onreadystatechange=function(){
                    if(request.readyState===4){
                        if(request.status===200){
                            document.getElementById("saveResult").innerHTML=request.responseText;
                        }else{
                            alert("发生错误la :"+request.status);
                        }
                    }
                }
            }

service.php
   $username=$_GET['username'];
   $password=$_GET["number"];
    $sex=$_GET["sex"];
    $job=$_GET["job"];
      if(($username=="11")&&($password)&&($sex)&&($job)){
           echo '{"success":"true","msg":"学生添加成功"}';
      }
else{
      echo '{"success":"false","msg":"参数错误,填写信息不全"}';

   } 
结果:是正确的。
但是,换为post传递,就有问题,代码如下:
  document.getElementById("save").onclick=function(){
        var request=new XMLHttpRequest();    
    var data="name1="+document.getElementById("stuname").value+"&number="+document.getElementById("stunumber").value+"&sex="+document.getElementById("stusex").value+"&job="+document.getElementById("stujob").value;
   request.open("POST","http://localhost/service.php");    
    request.setRequestHeader("Content-Type","appliaction/x-www-form-urlencoded");
    request.send(data);
        request.onreadystatechange=function(){
                if(request.readyState===4){
                    if(request.status===200){            document.getElementById("saveResult").innerHTML=request.responseText;
                        }
                        else{
                    alert("发生错误la :"+request.status);
                        }
                    }
                }
            }
  service.php代码:
 var_dump($_SERVER['REQUEST_METHOD']);//为了测试用
     $username=$_POST['name1'];
   $password=$_POST["number"];
    $sex=$_POST["sex"];
    $job=$_POST["job"];
      if(($username=="11")&&($password)&&($sex)&&($job)){
           echo '{"success":"true","msg":"学生添加成功"}';
      }   
else{
      echo '{"success":"false","msg":"参数错误,填写信息不全"}';
 
   }    
</code>

结果为:

string(4) "POST"
Notice: Undefined index: name1 in D:phpstudyWWWservice.php on line 23
Notice: Undefined index: number in D:phpstudyWWWservice.php on line 24
Notice: Undefined index: sex in D:phpstudyWWWservice.php on line 25
Notice: Undefined index: job in D:phpstudyWWWservice.php on line 26
{"success":"false","msg":"参数错误,填写信息不全"}
,这个是为什么呢?我哪里写的有问题?请高人指点,谢谢!

回复内容:

  1. GET方式

<code>    document.getElementById("save").onclick=function(){
        var request=new XMLHttpRequest();
    request.open("GET","http://localhost/service.php?username="+document.getElementById("stuname").value+"&number="+document.getElementById("stunumber").value+"&sex="+document.getElementById("stusex").value+"&job="+document.getElementById("stujob").value);
            request.send(null);            
               request.onreadystatechange=function(){
                    if(request.readyState===4){
                        if(request.status===200){
                            document.getElementById("saveResult").innerHTML=request.responseText;
                        }else{
                            alert("发生错误la :"+request.status);
                        }
                    }
                }
            }

service.php
   $username=$_GET['username'];
   $password=$_GET["number"];
    $sex=$_GET["sex"];
    $job=$_GET["job"];
      if(($username=="11")&&($password)&&($sex)&&($job)){
           echo '{"success":"true","msg":"学生添加成功"}';
      }
else{
      echo '{"success":"false","msg":"参数错误,填写信息不全"}';

   } 
结果:是正确的。
但是,换为post传递,就有问题,代码如下:
  document.getElementById("save").onclick=function(){
        var request=new XMLHttpRequest();    
    var data="name1="+document.getElementById("stuname").value+"&number="+document.getElementById("stunumber").value+"&sex="+document.getElementById("stusex").value+"&job="+document.getElementById("stujob").value;
   request.open("POST","http://localhost/service.php");    
    request.setRequestHeader("Content-Type","appliaction/x-www-form-urlencoded");
    request.send(data);
        request.onreadystatechange=function(){
                if(request.readyState===4){
                    if(request.status===200){            document.getElementById("saveResult").innerHTML=request.responseText;
                        }
                        else{
                    alert("发生错误la :"+request.status);
                        }
                    }
                }
            }
  service.php代码:
 var_dump($_SERVER['REQUEST_METHOD']);//为了测试用
     $username=$_POST['name1'];
   $password=$_POST["number"];
    $sex=$_POST["sex"];
    $job=$_POST["job"];
      if(($username=="11")&&($password)&&($sex)&&($job)){
           echo '{"success":"true","msg":"学生添加成功"}';
      }   
else{
      echo '{"success":"false","msg":"参数错误,填写信息不全"}';
 
   }    
</code>

结果为:

string(4) "POST"
Notice: Undefined index: name1 in D:phpstudyWWWservice.php on line 23
Notice: Undefined index: number in D:phpstudyWWWservice.php on line 24
Notice: Undefined index: sex in D:phpstudyWWWservice.php on line 25
Notice: Undefined index: job in D:phpstudyWWWservice.php on line 26
{"success":"false","msg":"参数错误,填写信息不全"}
,这个是为什么呢?我哪里写的有问题?请高人指点,谢谢!

post 用$_POST取
如果你又想取get 还想取post 可以用 $_REQUEST

因为你 PHP 中是用$_GET 所以当然只能获取get传递过来的值

$_GET 获取 url连接中的参数
$_POST 获取 post提交的参数
$_REQUEST 可以获取到get和post的参数

你的案例里,用$_GET是获取不到Post参数的。

post请求时参数格式不正确,换成var postData = { "name1": "value1", "name2": "value2"} 这样试一试。可以F12调试一下。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn