Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用javascript变量作为PHP数组键?_Php_Javascript_Jquery_Arrays - Fatal编程技术网

是否可以使用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).

我试图利用一个javascript变量作为PHP数组的键来
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']
获取id

PHP在服务器上完成执行,然后javascript在客户端上开始执行。我看不出没有聪明的东西怎么可能?真正地我可以并且已经在javascript中执行了PHP
echo
命令。完全可以在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