我正在使用Parse构建一个演示站点,使用户能够注册(用户,通过,发送电子邮件),登录和使用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();
这很好用&amp;加载现有的用户名,密码和电子邮件地址(如果有)......
假设我现在去&amp;更改说电子邮件(由于上面的内容预先填写),我现在运行以下内容:
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&amp;我无法理解如何在我的JS查询中设置它。
根据我的理解,消息必然与CORS直接相关:Firefox CORS request giving 'Cross-Origin Request Blocked' despite headers
我是这些树林中的学习者...
我已经尝试直接在html&amp; amp;也曾试图只更新用户名,但似乎没有任何想要工作的&amp;消息很难调试。
它似乎更新了数据库中的用户名字段,但未在应用程序中更新(即使在手动刷新之后)。我假设我必须以某种方式刷新Parse.user.current,但不确定如何最好地解决它(或者是否有更好的修复)?
答案 0 :(得分:1)
更新用户详细信息有效,但由于当前用户的会话在更新时到期,因此您需要确保用户再次登录。
此外,要设置用户名值,您需要user.set(&#34;用户名&#34;,newUserName)。
我只是为了更新用户名来回答这个问题。您可以根据自己的要求进行更改。 这是代码我如何更新登录用户的用户名。
$("#user-edit-form").submit(function(event){
var newUserName = $("#user-edit-form-username").val();
var password = $("#user-edit-form-password").val();
if (Parse.User.current()) {
var currentUser = Parse.User.current();
// update value when not same username
if (newUserName !== currentUser.get("username")) {
currentUser.set("username", newUserName);
currentUser.save();
// timeout for completing network request
setTimeout(function(){
Parse.User.logOut();
Parse.User.logIn(NewUserName, password, {
success: function(user){
alert("username updated successfully.");
console.log(user);
},
error: function(error){
console.log(error);
}
});
}, 250);
}
} else {
console.log("User not logged in.");
}
}