是否可以使用javascript变量作为PHP数组键?

时间:2013-03-19 01:29:43

标签: php javascript jquery arrays

我正在尝试将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>

非常感谢。

3 个答案:

答案 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