javascript - 如何从 Javascript 函数获取数据并将其保存到 php 中用户的自定义元字段?
问题描述
我正在使用一项自动向 Onesignal 注册用户设备的服务。
我通过调用gonative_onesignal_info();
内部脚本标签来调用登录功能(完整功能将在下面)。使用 Onesignal 可以完美地注册设备。
现在,根据该服务的文档,我可以通过 AJAX 将其发布到我的服务器,这是我正在努力解决的问题。从服务的文档中,如果您像这样调用 gonative_onesignal_info() :
function gonative_onesignal_info(info) {
console.log(info);
}
...信息将如下所示:
{
oneSignalUserId: 'xxxxxxx',
oneSignalPushToken: 'xxxxxx',
oneSignalSubscribed: true,
}
这是我的全部功能:
function onesignal_mobile_registration( $user_login, $user ) {
// Get user data
$user_id = $user->ID;
$user_email = $user->user_email;
?>
<script>
gonative_onesignal_info(info);
</script>
<?php
$oneSignalPushToken = ???;
update_user_meta( $user_id, 'oneSignalPushToken', $oneSignalPushToken);
}
add_filter( 'wp_login', 'onesignal_mobile_registration', 10, 2 );
那么,如何从该 Javascript 选项中提取oneSignalPushToken并将其存储在 $oneSignalPushToken 中以保存给我的用户?我想我需要使用 AJAX 将其拉出来,对吧?我该怎么做?
解决方案
您不能从 javascript 分配 php 变量,因为 php 在服务器中运行,但 javascript 在浏览器中运行。将 js 数据发送到 php 变量时,您必须$oneSignalPushToken
从 php 源获取值或从浏览器调用 ajax:
脚本地点:
<script>
var data = gonative_onesignal_info(info);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'test.php?oneSignalPushToken=' + data.oneSignalPushToken, true);
xmlhttp.send();
</script>
测试.php
function onesignal_mobile_registration( $user_login, $user ) {
// Get user data
$user_id = $user->ID;
$user_email = $user->user_email;
$oneSignalPushToken = $_GET['oneSignalPushToken'];
update_user_meta( $user_id, 'oneSignalPushToken', $oneSignalPushToken);
}
add_filter( 'wp_login', 'onesignal_mobile_registration', 10, 2 );
推荐阅读
- sql-server - 使用 DBMail 向不同的收件人发送不同的查询结果
- linux - 带有 IP 地址的 netstat 进程详细信息
- ios - 如何在 Swift iOS 中使用具有自定义私钥的 SHA256withRSA 对字节数组进行签名
- apache-spark - spark节点间通信支持哪些密码?
- laravel - ck 编辑器内容未在前端显示为 html
- visual-studio-code - 使用鼠标滚轮在集成终端中滚动
- android - 为什么 SetOnClickListener 并不总是有效?
- flutter - 如何使用flutter dio connect-type multipart?
- automation - testng-为场景示例打开多个浏览器
- python - python - 通过 smtplib 错误在本地发送电子邮件