【发布时间】:2012-03-09 02:02:21
【问题描述】:
我在开发服务器中的一个文件上编写了一个 javascript 函数(已经对其进行了测试并且它可以工作)并且它工作得很好,我将文件上传到生产服务器并且当我测试它时出现以下错误:
Opera Dragonfly 说:
Uncaught exception: TypeError: Cannot convert 'App.system.ManageProductLines' to object
萤火虫说:
App.system.ManageProductLines is undefined
文件完全一样(我用 WinMerge 检查并没有发现任何差异),唯一的区别是它们所在的服务器。
我的开发服务器是 windows 上最新版本的 Xampp,生产服务器是 OpenSuse 上最新版本的 Xampp。
有人知道发生了什么吗??
编辑:
dtryon 建议,这里有一些示例代码:
在 main.js 中
App.system.ManageProductLines = function()
{
var init_row = function(row)
{
//function to add table row behavior
}
var reindex_odd_even_rows = function(table)
{
//function to reoder table when row is deleted
}
}
在 index.tpl(Smarty 模板)中:
{if $product_lines_url}
<script type="text/javascript">
App.system.ManageProductLines.init('manage_product_lines');
</script>
{/if}
smarty 模板中的 if 确实在执行,因为最终的 HTML 中包含 script 标记,但是在开发服务器中找到了该函数,但在生产服务器中却没有
编辑 2:
感谢 Paul Butcher,我想我离答案越来越近了,我尝试了以下方法:
<script type="text/javascript">
$(document).ready(function()
{
App.system.ManageProductLines.init('manage_product_lines');
});
</script>
但它仍然无法加载,然后我尝试了这个:
<script type="text/javascript">
$(document).ready(function()
{
alert("Start document.ready");
if(App.system.ManageProductLines.init)
{
alert("Method found");
App.system.ManageProductLines.init('manage_product_lines');
}
else
{
alert("Method not found");
}
alert("End document.ready");
});
根据我写的内容,我应该收到以下警报:
"Start document.ready", "Method found" || "Method not found", "End document.ready"
奇怪的是我只得到“Start document.ready”,之后它似乎停止执行,Opera Dragonfly 和 Firebug 都显示和以前一样的错误。
【问题讨论】:
-
你有机会发布正在爆炸的代码吗?
-
我知道这是一个显而易见的检查,但我想知道您的 javascript 文件是否被缓存并且您需要清除缓存。还有@dtryon 所说的。
-
在您加载 App.system.ManageProductLines 之后,立即执行
console.log并查看 1. 是否确实已加载 2. 这段代码实际运行 -
@dtryon,我真的很想发布代码,但是由于许可问题我不能,我知道发布代码几乎是至关重要的,但遗憾的是我不被允许。
-
@caleb,我做了日志,就像我认为函数根本没有运行一样
标签: javascript function dev-to-production