AJAX - 使用POST而不是GET

时间:2011-04-12 16:48:07

标签: php javascript html ajax

到目前为止,我一直在使用:

xmlhttp.open("GET","server_script.php?q="+str,true);

由于

编辑: 我正在为可能遇到此页面的任何人提供解决方案,以演示如何使用POST而不是GET。如果您不熟悉AJAX,我会首先使用GET方法推荐本教程http://www.w3schools.com/PHP/php_ajax_php.asp

解决方案 -

的javascript:

xmlhttp.open("POST","script.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send('var_name='+str);

PHP:

$var_name = GET['var_name'];

echo $var_name;

有关使用POST和GET的原因 - 请参阅评论。

2 个答案:

答案 0 :(得分:6)

这就是你如何使用post:

var url = "server_script.php";
var params = "q="+str;
xmlhttp.open("POST", url, true);

//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");

xmlhttp.onreadystatechange = function() {//Call a function when the state changes.
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);
    }
}
xmlhttp.send(params);

source

答案 1 :(得分:4)

您显示的查询可能完全可以作为GET请求。无需改变它。

有理由使用其中一个:在服务器端更改状态的请求(即更改数据)通常应使用POST; “读取”请求应该是GET。

这带来了隐含的安全优势,因为您不能通过将URL走私到用户页面来做任何损害(例如,显示其URL指向名为deleteall.php的管理页面的图像。)

如果您的请求只是检索数据,那么完全可以使用GET。

有关何时使用哪个内容的广泛讨论,请参阅此问题。 GET vs POST in AJAX?