是否可以使用javascript变量作为PHP数组键?
我试图利用一个javascript变量作为PHP数组的键来是否可以使用javascript变量作为PHP数组键?,php,javascript,jquery,arrays,Php,Javascript,Jquery,Arrays,我试图利用一个javascript变量作为PHP数组的键来echoout。请注意,javascript变量id是我想用作PHP数组$allNames[]的键的want 这可能吗?没有JSON/AJAX?如果是,请帮忙 <script type="text/javascript" language="javascript"> $('*[class^="spec"]').mouseover(function(){ var the_class = $(this).
echo
out。请注意,javascript变量id
是我想用作PHP数组$allNames[]
的键的want
这可能吗?没有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>
$('*[class^=“spec”]')。鼠标悬停(函数(){
var the_class=$(this.attr(“class”);
var id=_class.replace(“spec”,“spec”);
$('#here').html('');//here
});
非常感谢。你做错了。在客户端javascript中,php必须已经包含所有变量 PHP在javascript之前呈现,因此您无法通过javascript创建echo语句
如果您想从ajax动态生成HTML,这仍然是可能的,因为许多javascript库(如jQuery)的要点是通过使用选择器动态修改文档对象中的元素。您可以使用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];
});
是的,你可以用JSON来做。只需像这样调用PHP文件
file.php?id=JAVASCRIPT_ID_HERE
然后在该PHP文件中,只需使用
$\u GET['id']
获取idPHP在服务器上完成执行,然后javascript在客户端上开始执行。我看不出没有聪明的东西怎么可能?真正地我可以并且已经在javascript中执行了PHPecho
命令。完全可以在javascript中注入PHP代码。这不是从javascript运行PHP。PHP回显首先运行,然后当页面到达客户端时,它们执行页面上的任何javascript,并将PHP回显的内容添加到其中。虽然PHP代码的结果会影响javascript,但javascript并没有运行PHP代码,只运行PHP代码的结果。你尝试的另一种方式是不被允许的。但至少只需要一个简单的json_encode()
。我可以并且已经通过JavaScript运行了PHP echo语句。@Kolink它是这样做的:它告诉他为什么他不能,然后根据关于他实际尝试做什么的假设给出了建议,这没有人真正知道。我很高兴你能帮助他,但他似乎想把一切都做得非常出色。这里的第一个片段确实起到了作用。虽然这会起作用,但Kolink完全击中了要害。很高兴看到你得到了答案:)
<div class="spec" data-hover="<?php echo htmlspecialchars($allNames[1]); ?>">Hover here</div>
$(".spec").mouseover(function() {
document.getElementById('here').innerHTML = this.getAttribute("data-hover");
});
file.php?id=JAVASCRIPT_ID_HERE