代码中的JavaScript和PHP有什么区别


JavaScript and PHP in code - whats the difference?

我的JavaScript部分有以下代码:

var opConfig = new Product.Options(<?php echo $this->getJsonConfig(); ?>);

PHP调用返回了一些字符串,为了方便起见,假设字符串是abcd。所以这个代码的结果是:

var opConfig = new Product.Options(abcd);

现在,几行之后,我有了这个代码:

this.opConfig = new Product.Options(opconfig);

opconfig变量具有相同的字符串abcd,但结果不同,this.opConfig看起来与以前不同。那么,我使用字符串作为参数的方式有区别吗?我错过了什么?对我来说,它应该总是相同的调用,即:

new Product.Options(abcd)

想法?

添加:JS代码中的完整调用如下所示:

var opConfig = new Product.Options({"16":{"26":{"price":5,"oldPrice":5,"priceValue":"5.0000","type":"fixed","excludeTax":5,"includeTax":5},"28":{"price":8,"oldPrice":8,"priceValue":"8.0000","type":"fixed","excludeTax":8,"includeTax":8},"27":{"price":10,"oldPrice":10,"priceValue":"10.0000","type":"fixed","excludeTax":10,"includeTax":10}},"14":{"price":0,"oldPrice":0,"priceValue":"0.0000","type":"fixed","excludeTax":0,"includeTax":0},"15":{"price":0,"oldPrice":0,"priceValue":"0.0000","type":"fixed","excludeTax":0,"includeTax":0}});

param作为对象到达被调用的函数,不知道为什么。用另一种方式调用它,似乎是同一个字符串作为字符串到达它。有人能帮忙吗?

更改为:

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');

opconfig是一个字符串变量,因此它将其作为参数进行微调。

而您的PHP代码将呈现:

var opConfig = new Product.Options(abcd);

abcd不是字符串变量。因此,您需要将其放入语音标记中,使其成为字符串对象。你现在的输出是:

var opConfig = new Product.Options('abcd');

如果您有new Product.Options(abcd),那么abcd是一个变量名,而不是字符串。您需要添加引号,使其最终成为new Product.Options('abcd'):

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');
// OR
var opConfig = new Product.Options("<?php echo $this->getJsonConfig(); ?>");

无论哪种方式,您都需要确保PHP输出转义任何可能"破坏"字符串文字的字符,例如,单引号(在第一个中)或双引号(在第二个中),或换行符(在任一个中)。

我可以看到你缺少引号:

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');

更改下线

var opConfig = new Product.Options(<?php echo $this->getJsonConfig(); ?>);

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');