我有一个调用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。我认为这是导致问题的双引号,但不知道如何修复。
答案 0 :(得分:1)
尝试
$element->setAttribs(array( 'onchange' => 'toggleSelect(this.value, ' . htmlspecialchars(json_encode($this->_testData)) . ')'));
使用htmlspecialchars你最终应该
<select onchange="toggleSelect(1, {"foo" : "bar"})"></select>
应该是有效的html,并且仍然将您的参数解释为有效的JSON对象。