Javascript Ext JS不';导入时无法加载,FireBug中的响应正文为0字节
首先,我是ExtJS的新手 感谢您花点时间研究我的问题,到目前为止,我还没有找到任何类似的问题。我正在尝试将webapp接口从Tiles/Spring/jQuery转换为Tiles/Spring/ExtJS接口,但是在开始一些基础工作时遇到了问题 首先,代码是:Javascript Ext JS不';导入时无法加载,FireBug中的响应正文为0字节,javascript,jsp,extjs,Javascript,Jsp,Extjs,首先,我是ExtJS的新手 感谢您花点时间研究我的问题,到目前为止,我还没有找到任何类似的问题。我正在尝试将webapp接口从Tiles/Spring/jQuery转换为Tiles/Spring/ExtJS接口,但是在开始一些基础工作时遇到了问题 首先,代码是: Ext.onReady(function() { Ext.QuickTips.init(); var login = new Ext.FormPanel({ title: "Please Login"
Ext.onReady(function() {
Ext.QuickTips.init();
var login = new Ext.FormPanel({
title: "Please Login",
url: 'j_spring_security_check',
labelWidth: 80,
frame: true,
defaultType: 'textField',
width: 300,
height: 150,
monitorValid: true,
bodyStyle: 'padding:10px',
items: [{
fieldLabel: 'Username',
name: 'j_username',
id: 'userName',
allowBlank: false,
listeners: {
afterrender: function(field) {
field.focus();
}
}
}, {
fieldLabel: 'Password',
name: 'j_password',
inputType: 'password',
allowBlank: false
}],
buttons: [{
text: 'Login',
formBind: true,
handler: function() {
loginSubmit();
}
}, {
text: 'Reset',
formBind: true,
handler: function() {
reset();
}
}],
listeners: {
afterRender: function(thisForm, options) {
this.keyNav = Ext.create('Ext.util.KeyNav', this.el, {
enter: loginSubmit,
scope: this
});
}
}
});
function reset() {
login.getForm().reset();
}
function loginSubmit() {
login.getForm().submit({
method: 'POST',
success: function(form, action) {
window.location = 'home';
},
failure: function(form, action) {
Ext.Msg.alert('Login Failed!', 'Login Failed');
reset();
}
});
}
login.render('login');
});
这被正确地包装在jsp页面的脚本标记中
我在该JSP呈现到的平铺页面中导入extJS文件:
<link type="text/css" rel="stylesheet" href="extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="extjs/ext-all-debug.js"></script>
在这一点上,我希望事情能以某种方式呈现出来,但我得到的是:
奇怪的是,这些文件确实加载成功(至少它们没有出现错误),只是显示了一个0字节的响应库,如下面第2行和第3行所示。
我环顾四周,已经尽我所能尝试了所有简单的修复方法,我希望这里的人能够提供帮助。再次感谢您抽出时间来研究我的问题
更新
当我更改了对sencha CDN的脚本引用时,我将这个错误转移到了一个新的错误上,但我想坚持下去,首先解决这个问题
根据下面的评论,我现在的最佳猜测是,我要么缺少ext-base.js(我下载的ExtJS中没有包含该文件),要么我的文件位置/Spring配置有误。我现在已将这些条目添加到我的spring配置中:
<mvc:resources location="/WEB-INF/extjs/*" mapping="/extjs/**" />
....
<security:intercept-url pattern="/appName/extjs/**"
access="permitAll" requires-channel="any" />
....
但我仍然有同样的错误。我的WEB-INF目录中有extjs文件夹,上面的mvc:resources不应该修复它,以便我可以像这样引用它:
< script type="text/javascript" src="extjs/ext-all-debug.js"
但是我仍然会遇到“302 found”错误,正如您在网络流量历史记录(最新图片)中看到的那样,找不到extjs文件(ext-all-debug.js和ext-all.css)。更有趣的是,错误代码是302(可能是重定向),而不是更常见的404 无论如何,这就是您得到0字节响应的原因,因为资源不在那里。您可以查看失败请求的详细信息以查看更多详细信息,但基本上您应该验证文件位置和服务器/应用程序配置,以了解为什么找不到这些文件 更新: 大多数情况下,这类问题是因为您没有经过身份验证。然后,当您执行GET请求时,服务器会检查您是否未通过身份验证,然后将您重定向到登录页面(302错误代码) 使用CDN是可行的,因为您不必在CDN服务器上进行身份验证 登录页面必须能够访问它所需的所有资源,即使您没有经过身份验证
可悲的是,我不知道你在使用什么技术,但这正是你所面临的问题 你是不是错过了这个
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
路径可能是错误的,您可能必须纠正这一点
更新
ext-base.js是不需要的,实际上它在任何地方都找不到。检查您的代码,看看是否包括所有这些
我将发布index.php的标题
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<title>Page Title</title>
<link rel="stylesheet" type="text/css" href="lib/ext/resources/css/ext-all.css"/>
<link rel="stylesheet" type="text/css" href="src/views/css/data-view.css" />
<script type="text/javascript" src="lib/ext/ext-all-debug.js"></script>
<script type="text/javascript" src="src/app.js"></script>
</head>
页面标题
我在其他地方看到了对ext-base.js的引用,但它似乎没有与我当前的ExtJS副本(4.1.1)一起提供,所以我认为这是不推荐的。不是这样吗?我在《入门》或其他指南中没有看到对ext base的引用。是的,你说得对。。。我的错。不需要ext-base.js。我知道Ext不是一个我丢失了一些文件include的函数,就像我建议的那样。我将从我的一个项目中粘贴我的index.php,这样您就可以检查您的牙库中包含的所有文件,以便发布索引文件的摘录。我仔细检查了我的导入,我确实有所有这些,但我还没有构建app.js,因为我现在只是想用ExtJS构建一个简单的面板/容器。我很感激你的建议,也许你是对的。我刚刚用sencha CDN ext all的链接重新加载了页面,它至少让我通过了那个错误。我正在查看我的webAppContext xml now(Spring),看看我是否遗漏了什么。从请求的详细信息中,我可以在哪里看到更多信息?除了http头信息之外,firebug似乎没有提供太多细节。再次感谢您的建议,我用添加到Spring配置中的一些行更新了原始问题。我认为您在这里走对了方向,这与身份验证有关。项目使用Spring来管理它,所以我可能只需要更新xml配置的某些部分以适应目录。我不是负责这部分弹簧安装的人,所以我一定错过了显而易见的机会!是的,这是一个spring配置问题,在身份验证之前没有设置允许的路径。谢谢你的帮助。