2016-08-18 196 views
1

我正在建立一個基本的社交網站,並創建了一個功能組。我的所有代碼都能正常工作,除了這部分拒絕或批准待處理成員的代碼外。下面的PHP代碼顯示掛起成員的特定組的列表:Ajax代碼沒有執行

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腳本中。

+1

我敢打賭,Web開發者控制檯中存在錯誤。如果不是按鈕提交表單,那是原因嗎? – epascarello

+1

如果你使用jQuery,你爲什麼要檢查readystatechange?你爲什麼要滾動自己的ajax代碼而不是使用jquery.ajax/jquery.get/etc ...? –

回答

1

所以,如果$pending[$x]是一個字符串,你的代碼看起來像這樣渲染

<button onclick="approveMember(foobar)"> 

時,當你點擊該按鈕所以,現在,它正在尋找一個名爲foobar變量。您需要將該字符串包裝在引號中。

$addMembers .= '<button onclick="approveMember(\''.$pending[$x].'\')">Approve</button>'; 
+0

非常感謝,這固定了! –

+0

但你標記了另一個答案...當你說這個固定它。 ;) – epascarello

+0

Woops,只是糾正它! –

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