我有一个要执行的简单$ .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>
我正在使用jquery-3.3.1在Google Chrome版本69.0.3497.81上运行 我还在此页面上加载了vue.js和alertify.js。
我是否缺少语法问题?还是有可能重叠。
答案 0 :(得分:0)
您正在尝试将表单元素作为数据传递给$.post
,并且无法序列化。
尝试更改为
var data = $(formData).serialize()
$.post("/kanban/"+path+"/submit", data, function(data){..
现在服务器将使用与使用默认浏览器进程提交表单完全相同的方式接收数据
还将考虑将formData
的名称更改为form
,以最大程度地减少混乱