【发布时间】:2021-09-20 17:42:40
【问题描述】:
我有一个带有搜索字段的 html 页面,该页面可以输入一个名称,其中返回一个名称和 ID 表(特别是来自 Steam)。最左边的列,名称,是我想要的超链接,当点击时,将用户带到所述玩家的个人资料(profile.php),我想在名称时将“名称”和“steamid”发送到该 profile.php链接被点击,所以本质上是从一个页面发送两个 JS 变量到另一个页面的 PHP 后端。
我是 ajax 的新手,似乎这是使用它的唯一方法,所以在研究了一段时间后,这就是我的想法:
$(document).ready(function() {
$('#playerList td').click(function(e) {
if ($(this).text() == $(this).closest('tr').children('td:first').text()) {
console.log($(this).text());
var name = $(this).text();
var steamid = $(this).closest('tr').children('td:nth-child(2)').text();
$.ajax({
url: 'profile.php',
method: 'POST',
data: {
playersSteamID : steamid,
playersName : name
},
success: function() {
console.log('success');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
}
})
}
});
});
ajax 定义的一切都按我的意愿工作,我想将“name”和“steamid”变量发送到 profile.php,但我认为我不了解 ajax 的工作原理。我的理解是ajax可以将信息(通常是我所看到的json对象)“发布”到url,但也可以从页面返回信息?这就是我有点困惑的地方,我想知道我是不是用错了。
快速说明:playerList 是我的桌子的 ID。
当我单击超链接时,它会将我带到 profile.php,这正是我想要的,但 php 的 $_POST[] 数组似乎为空/null,因为我在尝试访问时收到“未定义的数组键”错误“playersSteamID”和“playersName”。 var_dump() 也返回 NULL,所以我想知道在 ajax 中发送 data{} 字段的方式是否存在问题。我对此仍然很陌生,因此非常感谢任何帮助。
更新:我如何访问 profile.php 中的变量
<?php
echo var_dump($_POST['playersName']);
echo var_dump($_POST['playersSteamID']);
if (isset($_POST['playersName'])) {
console_log("PLAYER_NAME => ".$_POST['playersName']);
}
if (isset($_POST['playersSteamID'])) {
console_log("PLAYER_STEAMID => ".$_POST['playersSteamID']);
}
?>
profile.php 的其余部分正在获取这些变量并运行几个 sql 查询并构建一个在给定适当变量的情况下工作的表,但由于 $_POST[] 是空的,我无法继续上述点作为前两个行返回 null 并且条件永远不会为真,因为 isset() 为假。
【问题讨论】:
-
控制台日志名称和 steamid,也使用引号作为数据中的变量名称,例如 data { "playersSteamID":steamid, "playersName": name}
-
您好,我刚刚在 ajax 调用之前记录了“name”和“steamid”vars,它们应该是它们应该是的,但是在 data{} 块中添加引号似乎没有任何变化。
-
分享profile.php代码
-
所以您点击的是单元格中的链接?
-
对了,表格是两列,最左边的一个链接,点击最左边的时候,我想把那行的两个变量发送到profile.php
标签: javascript php html jquery ajax