我正在尝试将javascript变量用作echo
的PHP数组的键。请注意,我希望将javascript变量id
用作PHP数组$allNames[]
的键。
这可能吗?没有JSON / AJAX?如果是这样,请帮忙。
<script type="text/javascript" language="javascript">
$('*[class^="spec"]').mouseover(function(){
var the_class = $(this).attr("class");
var id = the_class.replace("spec", "");
$('#here').html('<?php echo $allNames[id]; ?>'); // here
});
</script>
非常感谢。
答案 0 :(得分:3)
您可以使用AJAX,但在这种情况下这样做可能会浪费。试试这个:
var allNames = <?php echo json_encode($allNames); ?>;
$('[class^="spec"]').mouseover(function() {
var id = this.className.substr(4); // more efficient than previous code
document.getElementById('here').innerHTML = allNames[id];
});
或者,尝试重构您的方法。而不是拥有这个(例子)
<div class="spec1">Hover here</div>
试试这个:
<div class="spec" data-hover="<?php echo htmlspecialchars($allNames[1]); ?>">Hover here</div>
然后你的脚本可以简单:
$(".spec").mouseover(function() {
document.getElementById('here').innerHTML = this.getAttribute("data-hover");
});
答案 1 :(得分:0)
你做错了。在客户端javascript中,php必须已经包含所有变量。
PHP在javascript之前呈现,因此您无法通过javascript创建echo语句
如果你想从ajax动态生成HTML,这仍然是可能的,因为许多javascript库(如jQuery)的重点是使用选择器动态修改文档对象中的元素。
答案 2 :(得分:0)
是的,你可以用JSON做到这一点。只需像这样调用PHP文件
file.php?id=JAVASCRIPT_ID_HERE
然后在该PHP文件中,只需使用$_GET['id']
来获取ID