我正在使用Parse中的数据模块。我正在使用HTML来创建电子邮件表单。我使用Javascript获取表单数据(电子邮件),然后从电子邮件地址生成用户名。然后将此信息保存到Parse数据库中。
这是HTML表单代码:
<form method="post" class="center">
<input id="email" name="email" type="email" placeholder="Type your email to create a Mail Link" />
<button id="submit" onclick="formSubmit();">Create</button>
</form>
这是Javascript:
function formSubmit() {
var emailValue = document.getElementById("email").value;
var userValue = emailValue.substr(0, emailValue.indexOf('@'));
Parse.initialize("---KEY---", "---KEY---");
var Users = Parse.Object.extend("Users");
var users = new Users();
users.save({username: userValue}).then(function(object) {
alert("Saved user");
});
users.save({email: emailValue}).then(function(object) {
alert("Saved email");
});
}
问题是控制台显示值已保存,但数据未保存到Parse中。
任何想法都将不胜感激!
答案 0 :(得分:1)
在“使按钮成为一个简单的按钮”中,无需将按钮更改为按钮,如您所提到的链接所示,您的代码也能正常工作。
您在保存用户数据后编写了.then()方法,但实际上在履行承诺时调用它来运行回调。
但是你在这里使用的是简单的Parse.Object,所以你要么使用Parse.Promise,要么只想使用简单的Parse.Object: -
users.save({
username: "Jake Cutter"
}, {
success: function(userObject) {
alert('The save was successful');
},
error: function(userObject, error) {
// The save failed. Error is an instance of Parse.Error.
// Do something if you want to do on error
}
});
有关详细信息,您可以查看: - https://www.parse.com/docs/js/symbols/Parse.Object.html#save https://www.parse.com/docs/js/symbols/Parse.Promise.html#then
答案 1 :(得分:0)
好的,我向Indra授予了赏金,但这里有更多背景的完整答案。这是一个烦人的问题,但你可以解决它。
首先,表单应使用onsubmit。
<form method="post" onsubmit="formSubmit();">
其次,您的功能应该使用Indra的方法来保存数据。 但是,您需要event.preventDefault();
之前。
event.preventDefault();
userList.save({
username: "Peter Adams"
}, {
success: function(userList) {
alert('Success');
},
error: function(userList, error) {
alert('Failed to create new object, with error code: ' + error.message);
}
});
答案 2 :(得分:0)
您可以使用jquery存储表单值并创建解析类的子类以及新的解析对象来存储解析中的值。
示例:
<form id="contact-form" >
First name:<br>
<input type="text" name="firstname" id="firstname">
<br>
Last name:<br>
<input type="text" name="lastname" id="lastname">
email:<br>
<input type="text" name="email" id="email">
<a href="/access2"><input type="submit" value="Get Access" /></a>
</form>
Javascript代码:
Parse.initialize("--KEY--", "--KEY--");
var Subscribers = Parse.Object.extend('Subscribers'); //create local parse object from your Parse class
$('#contact-form').submit(function(e) {
//on form submit
e.preventDefault();
//get data from form
var data = {
firstname: $("#firstname").val(),
lastname: $("#lastname").val(),
email: $("#email").val()
};
//create new Parse object
subscribers = new Subscribers();
//match the key values from the form, to your parse class, then save it
subscribers.save(data, {
//if successful
success: function(parseObj) {
alert(subscribers.get('firstname') + " " + subscribers.get('lastname') + " " + subscribers.get('email') + " saved to Parse.")
}
,
error: function(parseObj, error) {
console.log(parseObj);
console.log(error);
}
});
});