Ajax代码没有执行

时间:2016-08-18 15:04:58

标签: javascript php jquery ajax

我正在构建一个基本的社交网站,其中包含创建群组的功能。我的所有代码都完美无缺,除了这一小段代码拒绝或批准待审成员。以下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脚本中。

2 个答案:

答案 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>';