JQuery UI диалоговая форма отправки, которая определена с методом = POST каким-то образом превращается в GET - PullRequest
0 голосов
/ 01 марта 2012

Я могу использовать некоторую помощь, чтобы немного лучше понять диалог jQuery и пользовательский интерфейс jQuery.

Я использую диалог интерфейса пользователя jQuery v1.8.18 и jQuery v1.7.1 для загрузки html-страницы, содержащей форму.Сама форма была сгенерирована шаблоном Django.Заполнив форму и нажав «Отправить», я посмотрел на HTTP-запрос, который виден на стороне сервера Django.Сервер видит его как запрос ajax типа GET с пустыми словарями GET и POST.

Ожидаемым результатом будет POST с фактическими данными для отправки.Может кто-нибудь помочь мне понять, как UI Dialog изменил запрос POST в GET?Я использую Firebug, но мне нужны идеи для отладки.Спасибо.

Вот как я создал UI Dialog:

<script>
        $(document).ready(function() {
          var $dialog = $('<div></div>').load('/friend-request/').dialog({autoOpen:false, title:'Friend Request', modal:true});
         $('#friend-request').click(function() {
            $dialog.dialog('open');
                // prevent the default action, e.g., following a link
                return false;});

        });
</script>

Элемент # friend-request - это просто привязка HTML.Моя форма загружена в диалог.Вот код HTML формы, который был сгенерирован.

<form id="id-friendreq" method="post">
    <div style="display:none"><input type="hidden" value="12a94012df543b050d69f46f0012345" name="csrfmiddlewaretoken"></div>
    <div class="ctrlHolder" id="div_id_to_user">
        <label for="id_to_user">
            To user<span class="asteriskField">*</span>
        </label>
        <input type="text" maxlength="15" name="to_user" id="id_to_user">
    </div>
    <div class="ctrlHolder" id="div_id_message">
        <label for="id_message">
            Message<span class="asteriskField">*</span>
        </label>
        <textarea class="textarea" cols="40" id="id_message" name="message">Hi, please add me as your friend.</textarea>
    </div>
<div class="buttonHolder">
       <input type="submit" id="submit-id-submit" class="submit submitButton button white" value="Submit" name="submit">
</div>
</form>

Ответы [ 2 ]

0 голосов
/ 01 марта 2012

Если вы не устанавливаете для параметра ajax type значение «POST» или используете удобный метод, например $ .post (), по умолчанию используется значение «GET»

http://api.jquery.com/jQuery.ajax/

0 голосов
/ 01 марта 2012

Почтовый метод используется, только если вы отправляете некоторые данные.

$(el).load(url,data,success)

Если вы не предоставляете никаких данных, это эквивалентно пустому запросу get.Даже на стороне сервера, если вы не отправляете какие-либо данные, сервер не может узнать, отправили ли вы сообщение или получили запрос.Честно говоря, речь идет только о данных, вы также можете отправлять данные постов с помощью запроса get

Если вам нужно явно использовать запрос POST, используйте:

$.post(url,{},function(data){$('<div></div>').html(data)});
...