我在互联网上阅读了GET
和POST
,我对此感到很困惑。
我理解其中的大部分但是,我很少有困惑,比如我是否应该使用GET方法从操作页面获取(检索)数据,我们无法更改服务器数据(编辑,删除,更新),而post用于发布服务器上的数据,我们可以用它做(编辑,删除,更新)。
就像我有以下示例我很困惑如何使用POST方法?我没有参数传递到网址。
我也看到了,我不能让它异步。
xmlhttp = new XMLHttpRequest();
var url = "/TinyEditor/XML/PreviewBody.xml"
xmlhttp.open("GET", url, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send();
// alert(xmlhttp);
var xmlDoc;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xmlDoc = xmlhttp.responseXML;
// alert(xmlDoc);
}
}
当我对上面的代码使用POST方法时,我收到错误,
<title>The HTTP verb POST used to access path '/TinyEditor/XML/PreviewBody.xml' is not allowed
为什么会这样?
答案 0 :(得分:2)
答案 1 :(得分:2)
xmlhttp = new XMLHttpRequest();
var url = "/TinyEditor/XML/PreviewBody.xml"
xmlhttp.open("POST", url, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(post_variable); //I have changed this
// alert(xmlhttp);
var xmlDoc;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xmlDoc = xmlhttp.responseXML;
// alert(xmlDoc);
}
}
然后就像这样制作post_variable
post_variable=field_name=value&field_name2=value2
请记住使用 encodeURIComponent(value)
对值进行编码所以例如你的字符串看起来像这样
post_variable = "name=" + encodeURIComponent("this is my name") + "&last_name=" + encodeURIComponent("this is my last name");
我希望这会有所帮助
我建议你开始使用jQuery它的轻量级,然后使用自定义脚本会更容易。所以基本上如果你使用jQuery就可以这样做
$.ajax({
url: '/TinyEditor/XML/PreviewBody.xml', //read xml
type: 'post', //method type
dataType: 'xml', //can be json, html, xml etc
data: $('#form_id').serialize(), //this will collect form values
success: function(d) { alert(d); } //this method will be executed once done
});
就是这样,您不必担心浏览器版本,浏览器类型或类似内容。
答案 2 :(得分:1)
GET
和POST
是将数据提交到目标网页的两种方法。您可以通过form element
中的HTML
执行这两项操作。 form child elements
及其值将被带到目标。
GET
方法将以用户可查看的形式携带此数据,即它会将此数据附加到target URL.
所以使用此方法发送敏感数据根本不安全。
POST与GET
的POST相同,但用户无法查看。 POST
不会通过URL
传递信息。所以POST
可用于携带敏感数据(可论证:))