В моем PHP-файле есть следующий код jQuery (отредактировано 19 января 2010 @ 10:40 MST) :
<?php
$count = 0;
foreach($attachments as $attachment) :
echo '<script type="text/javascript">
$(\'#a_'.$count.'\').click(function() {
$(\'#d_'.$count.'\').show(200);
});
// if "no" is clicked
$(\'#d_'.$count.' .no\').click(function() {
$(\'#d_'.$count.'\').hide(200);
});
// if "yes" is clicked
$(\'#d_'.$count.' .yes\').click(function() {
$(\'#d_'.$count.'\').hide(200);
// update database table -- this is why I need the script inside the for loop!
var jsonURL = \'http://path/to/update_db_script.php\';
$.getJSON(jsonURL, {\'post_id\' : '.$attachment->ID.'}, function(data) {
alert(\'Thank you. Your approval was received.\');
});
$(\'#a_'.$count.'\').replaceWith(\'<span>Approved</span>\');
});
</script>';
echo '<li>';
if($attachment->post_excerpt == 'approved') {
// Check the proof's status to see if it reads "approved"
echo '<span>Approved</span>';
} else { ?>
// If not yet approved, show options
<a class="approve" id="a_<?php echo $count; ?>" href="#">Click to Approve</a>
<div class="confirm-approval" id="d_<?php echo $count; ?>">
<p>Please confirm that you would like to approve this proof:</p>
<a class="yes" href="#">Yes, I approve</a>
<a class="no" href="#">No, not yet</a>
</div><?php
} ?>
</li>
<?php $count++;
endforeach; ?>
Данная страница доступна здесь . Ссылки «нажмите для подтверждения» не работают (это моя проблема).
Когда я просматриваю исходный код, переменные PHP отображаются правильно в эхо jQuery:
<script type="text/javascript">
$('#a_0').click(function() {
$('#d_0').show(200);
});
... etc ...
</script>
Это выглядит правильно, но ничего не происходит, когда я нажимаю на любую из ссылок. Однако , когда я заменяю операторы PHP echo на простые числа (0, 1 и т. Д.), Функции щелчка работают как положено .
Вы можете спросить: с какой стати это происходит внутри цикла for? Причина в том, что мне нужно получить переменную attachment-> ID и передать ее внешний скрипт PHP. Когда кто-то нажимает «утвердить» и подтверждает, внешний сценарий берет вложение-> ID и обновляет значение базы данных, чтобы прочитать «утверждено».
Почему функция щелчка не срабатывает при наличии PHP? Есть ли здесь какая-то большая сила (например, ограничение хостинга), или я упускаю фундаментальную часть того, как PHP и JavaScript взаимодействуют?