我的PHP无法收到帖子'我将通过ajax发送变量

时间:2015-01-13 15:46:50

标签: javascript php ajax

这是我的javascript:

function fetchprov(proptype) {
    var reqdata = "condo="+proptype;
    hanapin=new XMLHttpRequest();
    hanapin.open('POST', 'testajax.php', true);
    hanapin.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
    hanapin.send(reqdata);
    hanapin.onreadystatechange = function() {
        if (hanapin.readyState == 4 && hanapin.Status == 200) {
            document.getElementById('province').innerHTML=hanapin.ResponseText
        }
    }
    window.alert(targeturl);
    window.alert(reqdata);
}

我知道函数正在接收数据,因为我使用了警报。

但是在php上:

<?php 
    $findwat = $_POST['condo'];
    echo $findwat;
?>

即使我使用单独的链接打开php文件,它也不会回显变量

2 个答案:

答案 0 :(得分:0)

http post请求的必填标头字段为Content-length。将您的代码更改为:

function fetchprov(proptype) {
    var reqdata = "condo="+proptype;
    hanapin=new XMLHttpRequest();
    hanapin.open('POST', 'testajax.php', true);
    hanapin.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hanapin.setRequestHeader("Content-length", reqdata.length);
    hanapin.setRequestHeader("Connection", "close");
    hanapin.send(reqdata);
    hanapin.onreadystatechange=function() {if (hanapin.readyState == 4 && hanapin.Status == 200) {document.getElementById('province').innerHTML=hanapin.ResponseText}   }
    window.alert(targeturl);
    window.alert(reqdata);
}

另一个更好的解决方案是使用jquery来处理ajax

答案 1 :(得分:0)

使用jQuery的一个例子:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

function fetchprov(proptype) {
    $.post("testajax.php", {condo:proptype}, function(data){
        // data is the result received from php
        alert(data);
    }); 
}