jQuery AJAX отправить сообщение форма запроса параметры пустые - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь отправить форму сообщения с jQuery AJAX. Я сделал сценарий для этого. После того, как я запустил этот скрипт в консоли на странице и успешно выполнил (потому что он получил AJAX успеха), но параметры запроса были пусты. Как это возможно? Я запутался, пожалуйста, кто-нибудь поможет мне с этим.

Моя форма:

<form method="post" action="/foo/bar" name="foobar">
    <h2>Nickname</h2>
    <div style="height: 20px;"></div>
    <div class="form-group">
        <div class="row">
            <div class="col-xs-8">
                <input type="text" class="form-control" id="nickname" name="nickname" value="">
            </div>
        </div>
    </div>

    <div class="checkbox">
        <input type="checkbox" name="accept" id="accept" value="1" checked="">
    </div>
    <div style="height: 10px;"></div>
    <p>
        <button class="btn btn-primary" id="voteBtn">Vote <i class="fa fa-check"></i></button>
    </p>
</form>

Мой сценарий:

$('form[name=foobar]').on('submit', function(e) {
    e.preventDefault();
    var data = {
        "nickname": "foobar",
        "accept": 1
    }
    $.ajax({
        type: "POST",
        url: "/foo/bar",
        contentType: "application/x-www-form-urlencoded",
        data: data,
        xhr: function() {
            // Get new xhr object using default factory
            var xhr = jQuery.ajaxSettings.xhr();
            // Copy the browser's native setRequestHeader method
            var setRequestHeader = xhr.setRequestHeader;
            // Replace with a wrapper
            xhr.setRequestHeader = function(name, value) {
                // Ignore the X-Requested-With header
                if (name == 'X-Requested-With') return;
                // Otherwise call the native setRequestHeader method
                // Note: setRequestHeader requires its 'this' to be the xhr object,
                // which is what 'this' is here when executed.
                setRequestHeader.call(this, name, value);
            }
            // pass it on to jQuery
            return xhr;
        },
        success: function(result) {
            console.log(result);
        },
        error: function(xhr, status, error) {
            alert(xhr.responseText);
            alert(status);
            alert(error);
        }
    });
});

 $('form[name=foobar]').trigger('submit')

Данные формы, которые отправляются вместе с ajax запрос, как-то пусто:

enter image description here

ОБНОВЛЕНО для @Phil и @ Не пани c

Я обновил код выше с упомянутым подходом @Phil, почтовый запрос действительно произошел, как я видел на вкладке сети. Но все же параметры были пустыми в запросе.

Заголовки запроса:

Request URL:http://localhost/foo/bar
Request method:POST
Remote address:0.0.0.0:443
Status code:302
Version:HTTP/2.0
Referrer Policy:strict-origin-when-cross-origin

Accept */*
Accept-Encoding gzip, deflate, br
Accept-Language en-US,en;q=0.5
Connection keep-alive
Content-Length 15
Content-Type application/x-www-form-urlencoded
Cookie __cfduid=d725b2ea3db135064a15f…cookiecheck-252793=Nmt9t15ppF
Host minecraft-mp.com
Referer http://localhost/foo
TE Trailers
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/68.0

И это данные формы, отправленные с запросом, все еще пустые ...? Как это возможно, когда я передаю объект «data» с запросом ajax.

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