我有一个注册表单,其中包含Firstname,lastname,email,class和college major字段,我正在尝试将表单中的信息发送到解析用户对象。当我在“user.signup”设置断点时,代码会逐步完成,我看到新用户出现在我的解析仪表板中。但是,如果我删除断点并提交表单,我会收到错误:
“错误:100 XMLHttpRequest失败: { “状态文本”: “”, “状态”:0, “响应”: “”, “的responseType”: “”, “responseXML的”:NULL, “responseText的”: “”, “上载”:{ “ontimeout”:空, “onprogress”:空, “onloadstart”:空, “onloadend”:空 “的onload”:空 “的onerror”:空, “onabort”:空}, “withCredentials”:假 “的readyState”:4 , “超时”:0, “ontimeout”:NULL, “onprogress”:NULL, “onloadstart”:NULL, “onloadend”:空 “的onload”:空 “的onerror”:NULL, “onabort”:NULL}”
我的javascript文件的代码是:
function SignUp() {
var user = new Parse.User();
var form = document.getElementById("signup-form")
var firstname = form.firstname.value;
var lastname = form.lastname.value;
var email = form.email.value;
var grad = form.grad.value;
var major = form.major.value;
var password = "6789";
user.set("firstname", firstname);
user.set("lastname", lastname);
user.set("email", email);
user.set("username", email);
user.set("grad", grad);
user.set("major", major);
user.set("password", password);
user.signUp(null, {
success: function(user) {
// Hooray! Let them use the app now.
alert("Thank you for signing up. We'll keep you updated!");
},
error: function(user, error) {
// Show the error message somewhere and let the user try again.
alert("Error: " + error.code + " " + error.message);
}
});
return false;
};
在我的html文件中,我在以下位置调用此函数:
<form class="form-signup" role="form" id="signup-form" onsubmit="SignUp();">
我是如何存储值的?我不明白某些东西可以用断点但不能没有。任何帮助都非常感谢!
答案 0 :(得分:3)
这是从异步方法中返回值的典型问题......这是不可能的。
阻止默认提交表单,然后在回调函数中明确提交。
答案 1 :(得分:1)
还有另一种方法可以解决这个问题:
而不是form class="form-signup" role="form" id="signup-form" onsubmit="SignUp()"
写div,即div class="form-signup" role="form" id="signup-form" onsubmit="SignUp()"
答案 2 :(得分:0)
如上所述,只需在功能开头和 document.getElementById(“your-form-id”)添加 e.preventDefault(); ).submit(); 或者在这种情况下只是 form.submit(); (因为它在前面的脚本中由 var form 定义)进入成功回调,它应该工作!我认为我会加入一些清晰度来强化CBroe的答案,因为没有指明form.submit函数的确切含义。