Zend使用json_encode形成setAttribs

时间:2011-09-27 21:47:39

标签: php javascript zend-framework

我有一个调用javascript函数onchange的zend form select元素。以下内容:

$element->setAttribs(array( 'onchange' => 'toggleSelect(this.value, ' . json_encode($this->_testData) . ')'));

问题是,ZEND onchange和json_encode都使用双引号,因此它变为:

<select onchange="toggleSelect(1, {"foo" : "bar"})"></select>

抱怨无效的属性ID。我认为这是导致问题的双引号,但不知道如何修复。

1 个答案:

答案 0 :(得分:1)

尝试

$element->setAttribs(array( 'onchange' => 'toggleSelect(this.value, ' . htmlspecialchars(json_encode($this->_testData)) . ')'));

使用htmlspecialchars你最终应该

<select onchange="toggleSelect(1, {&quot;foo&quot; : &quot;bar&quot;})"></select>

应该是有效的html,并且仍然将您的参数解释为有效的JSON对象。