0

我的 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}});

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

4

4 回答 4

2

改成:

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

opconfig是一个字符串变量,因此可以将其作为参数传递。

而您的 PHP 代码将呈现:

var opConfig = new Product.Options(abcd);

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

var opConfig = new Product.Options('abcd');
于 2012-07-25T14:31:36.883 回答
0

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

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

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

于 2012-07-25T14:32:26.410 回答
0

我可以看到您缺少引号:

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');
于 2012-07-25T14:32:46.303 回答
0

更改以下行

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

var opConfig = new Product.Options('<?php echo $this->getJsonConfig(); ?>');
于 2012-07-25T14:32:53.810 回答