解析数据和Javascript / HTML表单

时间:2014-07-04 20:24:48

标签: javascript html

我正在使用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中。

任何想法都将不胜感激!

3 个答案:

答案 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);
        }   
    });
});