我正在构建一个基本的社交网站,其中包含创建群组的功能。我的所有代码都完美无缺,除了这一小段代码拒绝或批准待审成员。以下PHP代码显示特定组中待处理成员的列表:
if (in_array($_SESSION['username'],$moderators)){
$addMembers = "Pending members";
for($x=0;$x<$pend_count;$x++){
$addMembers .= '<a href="'.$pending[$x].'">'.$pending[$x].'</a>';
$addMembers .= '<button onclick="approveMember('.$pending[$x].')">Approve</button>';
$addMembers .= '<button onclick="declineMember('.$pending[$x].')">Decline</button>';
}
}
onclick事件应触发以下JS脚本:
function approveMember(u){
var ajax = ajaxObj("POST", "php_parsers/group_parser.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
var datArray = ajax.responseText;
if(datArray == "member_approved"){
alert ("Member approved!");
}
}
}
ajax.send("action=approve_member&u="+u);
}
function declineMember(u){
var ajax = ajaxObj("POST", "php_parsers/group_parser.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
var datArray = ajax.responseText;
if(datArray == "member_declined"){
alert ("Member Declined");
}
}
}
ajax.send("action=decline_member&u="+u);
}
AJAX代码在后台执行PHP脚本以批准/拒绝成员并给出响应'member_approved'或'member_declined',然后应该在JS中触发警报。
现在,我有大约10个onclick事件触发器来执行一些AJAX代码,这些代码都运行正常,除了这些approveMember()和declineMember()。他们只是不想触发我的JS脚本,我找不到原因。我确信问题不在应该在后台执行的PHP脚本中。
答案 0 :(得分:1)
因此,如果$pending[$x]
是一个字符串,则代码在呈现时会显示为
<button onclick="approveMember(foobar)">
所以现在当你点击按钮时,它正在寻找一个名为foobar
的变量。您需要将字符串包装在引号中。
$addMembers .= '<button onclick="approveMember(\''.$pending[$x].'\')">Approve</button>';
答案 1 :(得分:1)
你需要引用你的字符串,而你正在编码你的属性。
$addMembers .= '<a href="'.htmlspecialchars($pending[$x]).'">'.htmlspecialchars($pending[$x]).'</a>';
$addMembers .= '<button onclick="approveMember('.htmlspecialchars(json_encode($pending[$x])).')">Approve</button>';
$addMembers .= '<button onclick="declineMember('.htmlspecialchars(json_encode($pending[$x])).')">Decline</button>';