2016-08-18 4 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, который работает нормально, за исключением этих утверждений() и declMember(). Они просто не хотят запускать мои сценарии JS, и я не могу понять, почему. Я уверен, что проблема не в скрипте PHP, который должен выполняться в фоновом режиме.

+1

Бьюсь об заклад, произошла ошибка в консоли веб-разработчиков. Если кнопки не представляют формы, это причина? – 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>'; 
Смежные вопросы