替换 PHP 代码中的 JavaScript 变量,其中 PHP 代码位于 JavaScript 代码块内


substitute javascript variable in php code where the php code is inside a javascript code block

我有一个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>

不幸的是,变量js被称为像文本,而不是'toto'值。

您需要

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

<?php
1

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

尝试

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

相反。请注意 json_encode() 的用法。这是一种安全措施,以确保您从Magento返回的任何内容都转换为语法有效的Javascript。这基本上可以防止相当于SQL注入攻击的JS攻击

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

这可能会有所帮助。

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; ?>";    

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