ajax-傳回值 - 在使用ajax時,為什麼使用get可以在後台php頁面中獲得值,而post確不行?

來源:互聯網
上載者:User
關鍵字 php ajax-傳回值 post get
  1. GET方式

    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":"參數錯誤,填寫資訊不全"}';    }    

結果為:

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方式

    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":"參數錯誤,填寫資訊不全"}';    }    

結果為:

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調試一下。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.