Jquery 如何在external file.js中将参数从PHP发送到主干
我尝试在CakePHP应用程序中编写我的第一个Backbone.js应用程序,并试图避免直接在页面中编写应用程序,而是在存储在js/Backbone/app.js中的特定文件中编写,我将把Backbone应用程序放在该文件中 我的第一个测试是通过在页面中编写应用程序来进行测试,问题是模型应用程序具有来自php数据的默认值 以下是不包含app.js的示例: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应用程序中创建一个特定的控制器,这会让我非常恼
例如,我应该将我的应用程序放在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");
}
});