Как это сделать используя метод POST? - PullRequest
0 голосов
/ 15 ноября 2011

Я читаю о GET и POST в интернете, и я совершенно сбит с толку. Я понимаю большинство из них, но у меня мало путаницы, как если бы я использовал метод GET для получения (извлечения) данных со страницы действий, мы не можем изменять данные сервера (например, редактировать, удалять, обновлять), в то время как сообщение используется для публикации Данные на сервере, и мы можем сделать (редактировать, удалять, обновлять) с этим. Как у меня есть следующий пример, я запутался, как сделать это с помощью метода POST? И у меня нет параметра для передачи в URL. Я также вижу, я не могу сделать это асинхронным.

 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 ]

2 голосов
/ 15 ноября 2011
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 (значение)

, например, ваша строка будет выглядеть такthis

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 голосов
/ 15 ноября 2011
1 голос
/ 15 ноября 2011

GET и POST - два способа отправки данных на целевую страницу. Вы можете сделать оба из form element в HTML. form child elements и их значения будут перенесены в цель.

GET метод будет переносить эти данные в форме, доступной для просмотра пользователем, то есть он будет добавлять эти данные в target URL., поэтому отправлять конфиденциальные данные с использованием этого метода совсем не безопасно.

POST делает то же самое, что и GET, но он недоступен для просмотра пользователем. POST будет нести информацию не через URL. Так что POST можно использовать для переноса конфиденциальных данных (можно спорить :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...