我在JSP中获得了这个javascript代码:
$('#myForm').submit(function(event) {
event.preventDefault();
var act = $('#myForm').attr('action') + '&act=' + $('#submitBtn').val();
var dataStr = $("#myForm").serialize();
$.post(act, dataStr, function(data, status) {
$('body').html(data);
});
return false;
});
事实:
我正在使用jquery v1.3.x(由于公司政策,我不能用新版本替换。)
jsp位于弹出窗口中。
有一个提交按钮,其中包含id = submitBtn
单击提交按钮时,它将执行上面的代码并将数据发送到struts操作。
动作网址:
someAction.do?someParam=blabla&someNo=213354345&mode=POP&act=Update Your Data
(注意:我已经替换了一些敏感数据,但参数模式相同)
问题出在这一行:
$( '主体')的html(数据);
在错误控制台中生成错误: NS_ERROR_FAILURE:失败。我听说它与跨域请求有关,但我的应用程序在localhost,它怎么可能发生?
在IE 8中,它成功地用数据值(即html字符串)替换了当前页面内容。但是在firefox(v22)中,它给出了空白页面,我点击了右键 - >>查看源代码,它真的是空的。然后我用firebug检查,响应数据确实包含结果html页面字符串。如果我用alert(数据)调试;在$('body')。html()调用之前,它还会显示html字符串。
所以 $。post()函数成功返回响应数据,但似乎 $('body')。html()函数无法呈现数据
那究竟发生了什么?我真的不知道。
这是什么解决方案?
更新
我检查了错误控制台,提交页面后出现此错误:
Error: NS_ERROR_FAILURE: Failure
Source File: http://localhost:8080/myapp/script/jquery.js
Line: 19
更新2: 我调试了java代码,我发现JSP中的输入html标签有索引数组名,如下所示:
myItem[0].name
myItem[1].name
...
未成功提交给ActionForm类。我调查问题的根源可能来自第三方javascript库。
答案 0 :(得分:0)
尝试这样的事情
$.post(act, dataStr, function(data) {
document.body.innerHTML = data;
});