Benim PHP dosyasında aşağıdaki jQuery kodu var (edited Jan 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; ?>
The page in question is available here. (Bu benim sorunum değil) bağlantılar çalışmıyor "onaylamak için tıklayın".
Ben kaynağını görüntülediğinizde, PHP değişkenleri jQuery içinde doğru yankılandı görünmektedir:
<script type="text/javascript">
$('#a_0').click(function() {
$('#d_0').show(200);
});
... etc ...
</script>
Bu doğru görünüyor, ama ben herhangi bir bağlantıları tıkladığımda hiçbir şey olmuyor. Bununla birlikte, when I replace the PHP echo statements with plain numbers (0, 1, etc.) the click functions work as expected.
Soran olabilir: why on earth do you have this inside a for loop? nedeni attachment->ID değişkeni almak ve harici bir PHP komut dosyası geçmek gerekir olmasıdır. Birisi "onaylama" ve teyit tıkladığında, dış komut eki-> kimliğini alır ve "onaylanmış" okumak için bir veritabanı değerini günceller.
Why won't the click function fire when PHP is in place? İşte burada daha büyük bir güçle bir tür (örneğin, barındırma sınırlama) var mı, ya da ben PHP ve JavaScript nasıl etkileşim temel bir parça eksik?