【发布时间】:2015-11-06 19:21:38
【问题描述】:
我正在使用 Parse 构建一个演示站点,它使用户能够注册(用户、密码、电子邮件)、登录然后使用 Parse.com 作为我的后端来更改这些凭据。
我已经解决了注册和登录问题,但现在在编辑用户时遇到了麻烦。
这是我到目前为止所做的:
(假设注册和登录工作正常,一切正常 写入用户中的默认(用户、密码、电子邮件)列 类)
HTML
<h1>User Edit</h1>
<form id="user-edit-form"></form>
JS 函数 1 - 将 PARSE.COM 中的现有内容输入到用户编辑表单 DIV
function areYouLoggedIn1() {
if (Parse.User.current()) {
function userdets() {
var username = Parse.User.current().get("username");
var password = Parse.User.current().get("password");
var email = Parse.User.current().get("email");
var output = "";
if (Parse.User.current().get("email")) {
email = email;
} else {
email = "placeholder='Add your email address'";
}
output += "<h3>S1</h3>";
output += "<p>Username: ";
output += "<input id='user-edit-form-username' type='text' value='"+username+"'>";
output += "</p>";
output += "<p>Password coming soon...</p> ";
output += "<p>Email: ";
output += "<input id='user-edit-form-email' type='email' value='"+email+"'>";
output += "</p>";
output += "<p><input id='login-submit' type='submit'></p>";
$("#user-edit-form").html(output);
};
userdets();
} else {
var output = "";
output += "<p>You're not logged in!</p>";
output += "<p>Do so by <a href='login.html'>clicking here to login!</a> Alternatively you can sign up for an account by <a href='signup.html'>clicking here to sign up</a>.<p/>"
console.log(output);
}
$("#user-edit-form").html(output);
};
areYouLoggedIn1();
这可以正常工作并加载现有的用户名、密码和电子邮件地址(如果存在)...
假设我现在去并更改说电子邮件(由于上述原因已预先填写),我现在运行以下命令:
JS 功能 2 - 用户更新
$("#user-edit-form").submit(function(event){
var user = Parse.User.current();
var username = $("#user-edit-form-username").val();
user.setUsername(username);
user.save(null, {
success: function(user) {
alert("Just updated "+user);
}
});
});
在控制台日志中,我得到一个返回:
跨域请求被阻止:同源策略不允许读取 远程资源在 https://api.parse.com/1/classes/_User/UsernameRemovedByMrT。 (原因:CORS 请求失败)。
我一直在研究 CORS,但我不知道如何在我的 JS 查询中设置它。
据我了解,消息并不总是与 CORS 直接相关:Firefox CORS request giving 'Cross-Origin Request Blocked' despite headers
我是这片树林里的学习驾驶者......
我尝试过直接在 html 中编写表单,也尝试只更新用户名,但似乎没有任何效果,而且消息很难调试。
它似乎确实更新了数据库中的用户名字段,但不是在应用程序中(即使在手动刷新之后)。我假设我必须以某种方式刷新 Parse.user.current,但不确定如何最好地进行(或是否有更好的修复)?
【问题讨论】:
-
再深入一点,我想知道我是否需要强制用户注销并重新登录?另一个观察结果是警报消息不起作用(可能是因为查询没有成功返回)?
标签: javascript jquery parse-platform cors