如何正确重定向和发送当前登录的变量?
How to redirect and send variables of the current logged in correctly?
你好,你好吗?我是 javascript 的新手,我需要帮助解决一个问题。我正在尝试发送当前登录会员的数据,并通过网站创建 www.wix.com 上的按钮重定向到不同的域。数据是状态、全名、电子邮件和 ID。使用的语言是javascript。
我想知道我做了什么才能在 url 中一起发送这些数据,以及我在代码中做错了什么。
import { currentMember } from 'wix-members';
import wixLocation from 'wix-location';
export function button2_click(event) {
wixLocation.to("www.page.com" + currentMember.getMember().then((member) => {
const id = member._id;
const status = member.status
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
return member;
})
.catch((error) => {
console.error(error);
})
);
}
- 正如 James 提到的,
getMember
return Promise 所以你应该等待 (await
) 或 Promise 完成数据才能使用它。
- 您正在尝试用字符串 (url) 连接对象(用户详细信息)。在 Javascript 中是不可能的。您可以使用
JSON.stringify
. 将对象“转换”为字符串
- 即使对象是字符串,您尝试重定向到的 URL 也是无效的,例如
www.page.com{id:1111,status:'active'}
。通过 url 传递数据的有效方法是通过查询参数,例如 www.page.com?userDetails={id:1111,status:'active'}
.
为了安全起见,将字符串化对象编码为 encodeURIComponent()
.
export async function button2_click(event) {
const member = await currentMember.getMember();
const id = member._id;
const status = member.status
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
const userDetails = JSON.stringify({id, status, fullName});
wixLocation.to(`www.page.com?user=${encodeURIComponent(userDetails)}`);
}
(您可以使用您现在使用的“then
方法”,但这是使用更现代的 API 的好机会,例如 async/await)
在 Wix Velo 论坛上进行了大量研究后,我发现 members-wix
API,目前它有问题,导致在 users-wix API,但它已被弃用,它隐藏了网站上的功能,使访问信息变得困难。但是,在将迁移功能从 users-wix
复制到 members-wix
之后,连同 members-wix
身份验证,它完美地工作了,我还要感谢 Mosh Feu 的帮助 https://whosebug.com /users/863110/mosh-feu,这帮助我理解和改进了这段代码。
import { currentMember } from 'wix-members';
import wixLocation from 'wix-location';
import { authentication } from 'wix-members';
// NOTE: This example uses the new wix-members.currentMember.getMember()
// function, which replaces wix-users.currentUser.
// See the function description for more information, and
// line 36 for the deprecated example.
// ...
currentMember.getMember('FULL')
.then((member) => {
// Replaces currentUser.id
const id = member._id;
// Replaces currentUser.loggedIn
const loggedIn = member ? true : false;
// Replaces currentUser.getEmail()
const loginEmail = member.loginEmail;
const contactEmails = member.contactDetails.emails;
})
.catch((error) => {
console.error(error);
});
currentMember.getRoles()
.then((roles) => {
// Replaces currentUser.role and currentUser.getRoles()
return roles;
})
.catch((error) => {
console.error(error);
});
// NOTE: This example uses the deprecated
// wix-users.currentUser object.
import wixUsers from 'wix-users';
// ...
let user = wixUsers.currentUser;
let userId = user.id; // "r5cme-6fem-485j-djre-4844c49"
let isLoggedIn = user.loggedIn; // true
user.getEmail()
.then((email) => {
let userEmail = email; // "user@something.com"
});
user.getRoles()
.then((roles) => {
let firstRole = roles[0];
let roleName = firstRole.name; // "Role Name"
let roleDescription = firstRole.description; // "Role Description"
});
user.getPricingPlans()
.then((pricingPlans) => {
let firstPlan = pricingPlans[0];
let planName = firstPlan.name; // "Gold"
let startDate = firstPlan.startDate; // Wed Aug 29 2018 09:39:41 GMT-0500 (Eastern Standard Time)
let expirationDate = firstPlan.expiryDate; // Thu Nov 29 2018 08:39:41 GMT-0400 (Eastern Daylight Time)
});
export async function button2_click(event) {
authentication.onLogin(async(member) => {
const loggedInMember = await member.getMember();
const memberId = loggedInMember._id;
console.log(`Member ${memberId} logged in:`, loggedInMember);
});
const member = await currentMember.getMember();
const id = member._id;
const status = member.status;
const email = member.loginEmail
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
const userDetails = JSON.stringify({ id, status, fullName ,email });
wixLocation.to(`https://www.url.com/?user=${encodeURIComponent(userDetails)}`);
}
你好,你好吗?我是 javascript 的新手,我需要帮助解决一个问题。我正在尝试发送当前登录会员的数据,并通过网站创建 www.wix.com 上的按钮重定向到不同的域。数据是状态、全名、电子邮件和 ID。使用的语言是javascript。 我想知道我做了什么才能在 url 中一起发送这些数据,以及我在代码中做错了什么。
import { currentMember } from 'wix-members';
import wixLocation from 'wix-location';
export function button2_click(event) {
wixLocation.to("www.page.com" + currentMember.getMember().then((member) => {
const id = member._id;
const status = member.status
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
return member;
})
.catch((error) => {
console.error(error);
})
);
}
- 正如 James 提到的,
getMember
return Promise 所以你应该等待 (await
) 或 Promise 完成数据才能使用它。 - 您正在尝试用字符串 (url) 连接对象(用户详细信息)。在 Javascript 中是不可能的。您可以使用
JSON.stringify
. 将对象“转换”为字符串
- 即使对象是字符串,您尝试重定向到的 URL 也是无效的,例如
www.page.com{id:1111,status:'active'}
。通过 url 传递数据的有效方法是通过查询参数,例如www.page.com?userDetails={id:1111,status:'active'}
.
为了安全起见,将字符串化对象编码为encodeURIComponent()
.
export async function button2_click(event) {
const member = await currentMember.getMember();
const id = member._id;
const status = member.status
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
const userDetails = JSON.stringify({id, status, fullName});
wixLocation.to(`www.page.com?user=${encodeURIComponent(userDetails)}`);
}
(您可以使用您现在使用的“then
方法”,但这是使用更现代的 API 的好机会,例如 async/await)
在 Wix Velo 论坛上进行了大量研究后,我发现 members-wix
API,目前它有问题,导致在 users-wix API,但它已被弃用,它隐藏了网站上的功能,使访问信息变得困难。但是,在将迁移功能从 users-wix
复制到 members-wix
之后,连同 members-wix
身份验证,它完美地工作了,我还要感谢 Mosh Feu 的帮助 https://whosebug.com /users/863110/mosh-feu,这帮助我理解和改进了这段代码。
import { currentMember } from 'wix-members';
import wixLocation from 'wix-location';
import { authentication } from 'wix-members';
// NOTE: This example uses the new wix-members.currentMember.getMember()
// function, which replaces wix-users.currentUser.
// See the function description for more information, and
// line 36 for the deprecated example.
// ...
currentMember.getMember('FULL')
.then((member) => {
// Replaces currentUser.id
const id = member._id;
// Replaces currentUser.loggedIn
const loggedIn = member ? true : false;
// Replaces currentUser.getEmail()
const loginEmail = member.loginEmail;
const contactEmails = member.contactDetails.emails;
})
.catch((error) => {
console.error(error);
});
currentMember.getRoles()
.then((roles) => {
// Replaces currentUser.role and currentUser.getRoles()
return roles;
})
.catch((error) => {
console.error(error);
});
// NOTE: This example uses the deprecated
// wix-users.currentUser object.
import wixUsers from 'wix-users';
// ...
let user = wixUsers.currentUser;
let userId = user.id; // "r5cme-6fem-485j-djre-4844c49"
let isLoggedIn = user.loggedIn; // true
user.getEmail()
.then((email) => {
let userEmail = email; // "user@something.com"
});
user.getRoles()
.then((roles) => {
let firstRole = roles[0];
let roleName = firstRole.name; // "Role Name"
let roleDescription = firstRole.description; // "Role Description"
});
user.getPricingPlans()
.then((pricingPlans) => {
let firstPlan = pricingPlans[0];
let planName = firstPlan.name; // "Gold"
let startDate = firstPlan.startDate; // Wed Aug 29 2018 09:39:41 GMT-0500 (Eastern Standard Time)
let expirationDate = firstPlan.expiryDate; // Thu Nov 29 2018 08:39:41 GMT-0400 (Eastern Daylight Time)
});
export async function button2_click(event) {
authentication.onLogin(async(member) => {
const loggedInMember = await member.getMember();
const memberId = loggedInMember._id;
console.log(`Member ${memberId} logged in:`, loggedInMember);
});
const member = await currentMember.getMember();
const id = member._id;
const status = member.status;
const email = member.loginEmail
const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`;
const userDetails = JSON.stringify({ id, status, fullName ,email });
wixLocation.to(`https://www.url.com/?user=${encodeURIComponent(userDetails)}`);
}