如何使用POST方法?

时间:2011-11-15 11:01:07

标签: javascript asp.net xmlhttprequest

我在互联网上阅读了GETPOST,我对此感到很困惑。 我理解其中的大部分但是,我很少有困惑,比如我是否应该使用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

为什么会这样?

3 个答案:

答案 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)

GETPOST是将数据提交到目标网页的两种方法。您可以通过form element中的HTML执行这两项操作。 form child elements及其值将被带到目标。

GET方法将以用户可查看的形式携带此数据,即它会将此数据附加到target URL.所以使用此方法发送敏感数据根本不安全。

POST与GET的POST相同,但用户无法查看。 POST不会通过URL传递信息。所以POST可用于携带敏感数据(可论证:))