JQuery.post () выполняет GET? - PullRequest
       2

JQuery.post () выполняет GET?

4 голосов
/ 30 октября 2011

Я использую $.post(), чтобы сделать следующее ...

    $.post('login',details);

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

Содержимое details: { username: "username", pasword: "password"}, а страница login - это страница login.java, использующая Джерси.

Ответы [ 4 ]

7 голосов
/ 31 октября 2011

POST to GET часто вызывается неправильным URL-адресом.

Я думаю, что ваша серверная программа ожидает, что URL заканчивается на / и перенаправляет на этот адрес, используя HTTP 301 или 302 ответ; в соответствии со спецификациями это означает, что GET должен быть выдан вместо POST.

Попробуйте вместо этого использовать «логин /»; также учтите, что ваш код должен вызываться из любого URL на вашем сайте; желательно привязать URL к корню сервера, таким образом "/ login /"!

1 голос
/ 31 октября 2011

Если $ .post не работает, попробуйте вместо этого функцию $ .ajax:

    $('#target').click(function() {

    var formdata = $('#loginFrm').serialize(); // will produce { username: "username", pasword: "password"}
        $.ajax({type: "POST",
                        url: "urlto/tojavapage",
                        data: formdata ,
                        success: function(data) {
                            // div container to display error msg       
                            $('#loginmessage').html(data);
                        }
                    });

                    return false;


});`

убедитесь, что на кнопке отправки есть событие click, которое вызывает это, например,

<input type="button" value="login" id="target" /> <div id="loginmessage"> </div>

спасибо

0 голосов
/ 31 октября 2011

Единственное, о чем я могу подумать, это то, что если вы собираете «детали» в форме и используете обработчик onClick кнопки отправки формы для вызова сообщения ajax, тогда форма может быть отправлена ​​до того, как на самом деле может быть вызван ajax.

Вы сможете увидеть это, используя firebug или отладчик chrome js, чтобы установить точку останова на вашем вызове $ .post, чтобы увидеть, получен ли он. Или используйте проверенный метод установки оповещения () непосредственно перед ним.

0 голосов
/ 31 октября 2011

Если вы делаете это со своего домашнего компьютера, скорее всего, у вас не установлен PHP на вашем компьютере.Это означает, что браузер обрабатывает сообщение как обычный запрос к серверу.Другая возможность состоит в том, что ваша форма выглядит примерно так:

<form name="xxx" method="post" action="login">
<!--Stuff-->
<input type="submit" value="xxx" />
</form>

. Это означает, что форма будет отправлена ​​без предварительного просмотра jQuery, и браузер снова начнет искать документ, которыйотсутствует и выполните запрос по умолчанию GET.

Или ...

Файл, который вы POST тоже используете, не называется index.php или index.html, поэтомубраузер ничего не находит, и опять-таки по умолчанию GET

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