0

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

4 回答 4

2

你需要echo那个值。现在你的代码相当于

<?php

1

这基本上是无操作的。它什么也没做。

尝试

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

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

于 2013-09-12T14:45:47.553 回答
0

This might help.

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; ?>";    
于 2013-09-12T15:03:41.567 回答
0

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

于 2013-09-12T14:45:14.853 回答
0

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

于 2013-09-13T08:16:52.727 回答