在php代码中替换javascript变量,其中php代码在javascript代码块中

时间:2013-09-12 14:41:32

标签: javascript php jquery magento

我有一个JS代码。在这里我有一个Js var和PHP代码。 我的代码是这样的:

<script  type="text/javascript">
var variablejs = 'toto';
var OptionsModel = '<?php $modeles = Mage::getModel('modeles/modele')->getCollection()->addfilter(marque, '+ variablejs + ');?><option><?php echo $this->__('Choose an Option...') ?></option><?php foreach ($modeles as $modele) : ?><option  val=\'<?php echo $modele->getMarque(); ?>\'><?php echo $modele->getModele(); ?></option><?php endforeach; ?>';
jQuery('#model').empty().append(OptionsModel);
</script>

不幸的是,variablejs被称为文本,而不是'toto'值。

4 个答案:

答案 0 :(得分:2)

您需要echo该值。现在你的代码相当于

<?php

1

基本上是无操作。它什么都不做。

尝试

var OptionsModel = <?php echo json_encode(Mage::GetModel(etc....)) ?>;

代替。注意json_encode()的用法。这是一种安全措施,可确保您从Magento获得的任何内容都转换为语法上有效的Javascript。这基本上可以防止JS等同于sql注入攻击

答案 1 :(得分:0)

那永远不会奏效。您只能通过ajax调用将js变量传递给PHP。因此,对您的一个控制器进行ajax调用,然后返回您需要的选项作为json。然后你可以在你的js脚本上使用它们。

答案 2 :(得分:0)

这可能会有所帮助。

var OptionsModel = "@<?php $modeles = Mage::getModel('modeles/modele')->getCollection()->addfilter(marque, ";
    OptionsModel += variablejs;
    OptionsModel += "@);?><option><?php echo $this->__('Choose an Option...') ?></option><?php foreach ($modeles as $modele) : ?><option  val=\'<?php echo $modele->getMarque(); ?>\'><?php echo $modele->getModele(); ?></option><?php endforeach; ?>";    

答案 3 :(得分:0)

在将javascript写入页面之前,您需要告诉PHP在variablejs中的内容。 如果在Javascript中设置了variablejs,AJAX就是你的答案。必须根据AJAX调用的返回值创建OptionsModel。