如果我这样做:
$this->view->form->getElement('subtipo')->setStoreParams(array('url'
=> 'http://localhost/~xpete/project/public/info/lookup/tipo/1'));
我在生成的html / js上得到了这个结果:
subtipo_id = new dojo.data.ItemFileReadStore({"url":"http:\/\/localhost\/~xpete\/project\/public\/info\/lookup\/tipo\/1"});
\
已被\/
取代。
有什么方法可以避免这种情况吗?这是Zend的错误吗?
我用Zend FW 1.11.7 1.11.8和1.11.9预览尝试了这个。 我尝试打开和关闭两个魔术引号,结果是一样的。 我正在使用php 5.3.7,因此默认情况下禁用魔术引用。
setStoreParams
是Zend Framework中的一种方法,这就是为什么我认为这可能是一个错误。
答案 0 :(得分:1)
以下是一些链接,描述了您在PHP中看到的一些行为:
http://www.php.net/manual/en/function.json-encode.php#100679
https://bugs.php.net/bug.php?id=49366
结果是为PHP 5.4(当前处于alpha状态)创建了一个标志,以便能够不转义斜杠。我还没有看到这是否被移植到5.3分支机构。
正如今天ZendFramework 1的(希望)最终版本一样,您可以根据需要修改Zend_Json :: encode方法。让它查找以'http://'开头的字符串并将斜杠删除。
答案 1 :(得分:0)
您必须使用str_replace("/","",your_string)
替换用户界面中的“/”文本。
答案 2 :(得分:-1)
这不是一个错误。通常的做法是使用双引号转义正斜杠/
以避免javascript错误。当Javascript将其写为字符串时,它只会写http://localhost/~xpete/project/public/info/lookup/tipo/1