Всплывающая кнопка не работает внутри успеха Ajax через JSON

У меня есть кнопка, которая передается через JSON в div на моей странице home.php. Кнопка отлично передана и отображается внутри своего назначенного div. Но когда я нажимаю кнопку, мое всплывающее окно на странице comments.php, включенной в страницу home.php, не появляется.

Insert.php (Json передается обратно в home.php)

$posts['shared_button']="<a style='cursor:pointer;' id='".$row['streamitem_id']."'onclick='document.getElementById('lights".$row['streamitem_id']."').style.display='block';document.getElementById('fade').style.display='block'' class='pop' title='Share this' href='#'>Share</a>";

home.php (функция успеха)

success: function(data){ 
    $.each(data.userpost, function(i, response) {
    $("#newmsg").html(""); 
    if (response.streamitem_type_id == 1 && response.stopcomments == 1) { 
    $("#homestatusid").prepend("<div id='streamshare'>"+response['shared_button']+"</div>");
    }

comments.php (всплывающий блок)

<div id="lights<? echo $streamitem_data['streamitem_id']; ?>"></div>

Всплывающее окно работает именно так, как должно на стороне клиента, используя стандартные html и php, это только тогда, когда я пытаюсь использовать версию той же кнопки с ajax-ed.

ОБНОВЛЕНИЕ. Исходная кнопка фактически находится внутри comments.php вместе с div, который она вызывает, поскольку ajax, вызывающий json, находится в home.php. Может ли это быть причиной, поскольку я не думал, что будет иметь значение, будут ли включены php-страницы, поскольку весь html доступен!


person David Draw    schedule 15.12.2016    source источник


Ответы (1)


Похоже, у вас несбалансированные котировки. Вы используете одинарные кавычки для значений атрибутов вашей кнопки, а также в содержимом атрибута:

onclick='document.getElementById('...')'

Вы можете сделать это, но тогда вам придется избегать внутренних одинарных кавычек (\').

Проверьте консоль браузера на наличие ошибок при нажатии кнопки.

person Quagaar    schedule 15.12.2016
comment
Я обновился до этого <a style="cursor:pointer;" id="'.$row['streamitem_id'].'" onclick="document.getElementById(\'lights'.$row['streamitem_id'].'\').style.display="block";document.getElementById(\'fade\').style.display="block"" class="pop" title="Share this" href="#">Share</a> - person David Draw; 16.12.2016
comment
Uncaught SyntaxError: Неожиданный токен } - person David Draw; 16.12.2016
comment
(функция (событие) {document.getElementById ('lights1299').style.display =}) - person David Draw; 16.12.2016
comment
Вы пропустили display="block" часть. Там тоже нужно использовать одинарные кавычки: <a style="cursor:pointer;" id="'.$row['streamitem_id'].'" onclick="document.getElementById(\'lights'.$row['streamitem_‌​id'].'\').style.disp‌​lay=\'block\';document‌​.getElementById(\'fa‌​de\').style.display=‌​\'block\'" class="pop" title="Share this" href="#">Share</a> - person Quagaar; 16.12.2016