Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Jquery 如何在external file.js中将参数从PHP发送到主干_Jquery_Backbone.js_Default Value - Fatal编程技术网

Jquery 如何在external file.js中将参数从PHP发送到主干

Jquery 如何在external file.js中将参数从PHP发送到主干,jquery,backbone.js,default-value,Jquery,Backbone.js,Default Value,我尝试在CakePHP应用程序中编写我的第一个Backbone.js应用程序,并试图避免直接在页面中编写应用程序,而是在存储在js/Backbone/app.js中的特定文件中编写,我将把Backbone应用程序放在该文件中 我的第一个测试是通过在页面中编写应用程序来进行测试,问题是模型应用程序具有来自php数据的默认值 以下是不包含app.js的示例: 例如,我应该将我的应用程序放在jQuery的文档中吗?我希望不是这样,这会迫使我在CakePHP应用程序中创建一个特定的控制器,这会让我非常恼

我尝试在CakePHP应用程序中编写我的第一个Backbone.js应用程序,并试图避免直接在页面中编写应用程序,而是在存储在js/Backbone/app.js中的特定文件中编写,我将把Backbone应用程序放在该文件中

我的第一个测试是通过在页面中编写应用程序来进行测试,问题是模型应用程序具有来自php数据的默认值

以下是不包含app.js的示例:


例如,我应该将我的应用程序放在jQuery的文档中吗?我希望不是这样,这会迫使我在CakePHP应用程序中创建一个特定的控制器,这会让我非常恼火,无法及时了解最新情况。

因此您基本上有两个选择:

你可以用PHP加密你的JS文件。我不是PHP专家,所以我不能告诉你如何做的细节,但本质上,你可以修改一些设置,让PHP处理你的*.js文件。如果您这样做,那么您可以将您想要的任何PHP逻辑粘贴到app.js或任何其他js文件中

然而,这种方法强烈地耦合了PHP和JS代码,这通常被认为是一个坏主意,因为将PHP和HTML严重混合在一起被认为是不好的做法。因此,我建议

您可以将PHP部分写入PHP页面上的变量,然后在JS文件中引用这些变量

例如,在PHP文件中,您可以执行以下操作:

<script type="text/javascript">
var YOUR_APP = {};
YOUR_APP.MESSAGE = {};
YOUR_APP.MESSAGE.ICON_SRC = "<?php echo $this->App->icon('default-icon-name');?>";
YOUR_APP.MESSAGE.TITLE = "<?php echo __('Default title'); ?>";
</script>
<script type="text/javascript" src="js/app.js"></script>

由于标签的顺序,您不需要任何onDOMReady包装。

此外,您可能想检查一下,它与您试图做的并不完全相同,但它的脉络相同。
$(function(){
    $.ajax({
      url: "http://site.com/json/default_app"
    }).done(function(data) {
        var Status = {
            Models: {},
            Collections: {},
            Views: {},
            Templates:{}
        }
        Status.Models.Message = Backbone.Model.extend({
            defaults:data,
            initialize:function () {
                console.log("Backbone console message from initialize event");
            }
        });
    });
})(jQuery);
<script type="text/javascript">
var YOUR_APP = {};
YOUR_APP.MESSAGE = {};
YOUR_APP.MESSAGE.ICON_SRC = "<?php echo $this->App->icon('default-icon-name');?>";
YOUR_APP.MESSAGE.TITLE = "<?php echo __('Default title'); ?>";
</script>
<script type="text/javascript" src="js/app.js"></script>
Status.Models.Message = Backbone.Model.extend({
    defaults: {
        icon: YOUR_APP.MESSAGE.ICON_SRC,
        title: YOUR_APP.MESSAGE.TITLE,
    },
    initialize:function () {
        console.log("Backbone console message from initialize event");
    }
});