Php 如何将变量推送到ajax的web客户端?
嘿,伙计们,我如何在ajax调用中使用PHP变量$contact['id']?我正在尝试创建一个页面,用于检索与用户关联的所有通知。当页面加载时,我已经知道用户的id,如何从一开始就在ajax调用中使用此参数?目前我正在使用php预处理器,分解php字符串并插入变量,但我知道这不是一个特别好的解决方案,例如,不允许我将javascript重构到自己的文件中。顺便说一下,我正在使用Zend PHP框架。有人知道如何最好地实现我的目标吗Php 如何将变量推送到ajax的web客户端?,php,javascript,ajax,zend-framework,Php,Javascript,Ajax,Zend Framework,嘿,伙计们,我如何在ajax调用中使用PHP变量$contact['id']?我正在尝试创建一个页面,用于检索与用户关联的所有通知。当页面加载时,我已经知道用户的id,如何从一开始就在ajax调用中使用此参数?目前我正在使用php预处理器,分解php字符串并插入变量,但我知道这不是一个特别好的解决方案,例如,不允许我将javascript重构到自己的文件中。顺便说一下,我正在使用Zend PHP框架。有人知道如何最好地实现我的目标吗 <?php $this->headScript()
<?php $this->headScript()->appendScript('
dojo.require("dijit.form.Textarea");
function getNotes(){
dojo.xhrGet({
url: "/manager/contacts/get-notes-html",
content: {
"contactId" : '.$this->contact['id'].',
},
load: function(response) {
console.log("Form successfully submitted");
dojo.byId("notesDiv").innerHTML = response;
},
error: function() {
console.error("Error on submission");
alert("error error errrrror");
}
});
}
dojo.addOnLoad(getNotes);
');
?>
<div id="notesDiv">
</div>
只需将联系人id放在javascript中的一个变量中,这样无论发生什么,您都可以保留相同的代码,而且代码更干净 如果您不想污染全局名称空间,只需创建自己的数据即可 i、 e
嘿,谢谢你的快速回复,但是没有更好的方法吗?因为如果我用.js而不是.php扩展名将javascript重构成自己的文件,那么我认为php预处理器将忽略,$this->contact['id']将无法工作。我真的不知道这个id用于什么。但若您能够在服务器端将其来宾化,那个么就不应该在客户端推送它。如果这个id链接到任何页面,并且您仍然想使用ajax,恐怕没有其他解决方案了。您不需要生成php process.js文件,只需编写javascript代码,并在来自服务器的时候使用变量。在动作控制器上添加javascript中的变量,就完成了
<?php $this->headScript()->appendScript('
contact_id = ' . $this->contact['id'] .';
');
$this->view->headScript()->captureStart();
echo "foobar = {$foobar};\n";
$this->view->headScript()->captureEnd();