JQuery.post Не удалось выполнить 'postMessage' - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть простой $ .post (), который я хочу выполнить

function(formData) {

var path = reg ? "login" : "regester";
formData.bundle_id = window.bundleId;
app.error = false;
app.unknown = false;
$.post(("/kanban/"+path+"/submit"),{"form":formData},function(data){
    if(data.success){
        window.location.href=data.redir;
    }
    else if(data.user) {
        window.location.href="/kanban";
    }
    else {
        app.error = true;
    }
})
.fail(function(jqXHR, textStatus, errorThrown) {
    app.unkown = true;
});
}

Приложение определено

const app = new Vue({...});

В настоящее время, когда вызывается функция, я получаю ошибку

jquery.js:8463 Uncaught TypeError: Failed to execute 'postMessage' on 'Window': 2 arguments required, but only 0 present.
at add (jquery.js:8463)
at buildParams (jquery.js:8450)
at buildParams (jquery.js:8444)
at Function.jQuery.param (jquery.js:8483)
at Function.ajax (jquery.js:9073)
at Function.jQuery.(/kanban/anonymous function) [as post] (https://127.0.0.1/kanban/js/jquery.js:9355:17)
at submitForm (register?bundle_id=-1:84)
at <anonymous>:1:1

Я не уверен, что может быть причиной этого. Это может быть простая синтаксическая ошибка, но я не могу ее найти.

Я вызываю мой метод js отсюда

<form action="javascript:submitForm(this)">
......
</form>

Я работаю в Google Chrome версии 69.0.3497.81 с jquery-3.3.1 На этой странице также загружены файлы vue.js и alertstify.js.

Есть ли проблема с синтаксисом, которую мне не хватает? Или возможно совпадение.

1 Ответ

0 голосов
/ 12 сентября 2018

Вы пытаетесь передать элемент формы в $.post как данные, и их невозможно сериализовать.

Попробуйте изменить на

var data = $(formData).serialize()
$.post("/kanban/"+path+"/submit", data, function(data){..

Теперь сервер будет получать данные точно так же, как если бы форма была отправлена ​​с использованием процесса браузера по умолчанию

Также можно рассмотреть возможность изменения имени formData на form, чтобы минимизировать путаницу

...