2016-08-18 13 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でアラートがトリガーされます。

これらのapproveMember()およびdeclineMember()を除いて、正常に動作しているAJAXコードを実行するために、これらのonclickイベントトリガーが約10個あります。彼らは私のJSスクリプトを起動させたくないので、なぜそれを見つけることができません。私は問題がバックグラウンドで実行されるべきPHPスクリプトにないと確信しています。

+1

ウェブデベロッパーコンソールにエラーがあります。ボタンがフォームを送信しない場合は、それが原因ですか? – epascarello

+1

jqueryを使用している場合は、なぜreadystatechangeをチェックしていますか?なぜjquery.ajax/jquery.get/etc ...の代わりに独自のajaxコードを使用しているのですか? –

答えて

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>'; 
関連する問題