Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将变量推送到ajax的web客户端?_Php_Javascript_Ajax_Zend Framework - Fatal编程技术网

Php 如何将变量推送到ajax的web客户端?

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()

嘿,伙计们,我如何在ajax调用中使用PHP变量$contact['id']?我正在尝试创建一个页面,用于检索与用户关联的所有通知。当页面加载时,我已经知道用户的id,如何从一开始就在ajax调用中使用此参数?目前我正在使用php预处理器,分解php字符串并插入变量,但我知道这不是一个特别好的解决方案,例如,不允许我将javascript重构到自己的文件中。顺便说一下,我正在使用Zend PHP框架。有人知道如何最好地实现我的目标吗

<?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();