$('body')。html()从Firefox中的$ jQuery.post响应数据中提供了空白内容

时间:2013-11-18 09:25:06

标签: javascript html jquery struts-1

我在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;
});

事实:

  1. 我正在使用jquery v1.3.x(由于公司政策,我不能用新版本替换。)

  2. jsp位于弹出窗口中。

  3. 有一个提交按钮,其中包含id = submitBtn

  4. 单击提交按钮时,它将执行上面的代码并将数据发送到struts操作。

  5. 动作网址:

    someAction.do?someParam=blabla&someNo=213354345&mode=POP&act=Update Your Data

    (注意:我已经替换了一些敏感数据,但参数模式相同)

  6. 问题出在这一行:

    $( '主体')的html(数据);

    在错误控制台中生成错误: NS_ERROR_FAILURE:失败。我听说它与跨域请求有关,但我的应用程序在localhost,它怎么可能发生?

  7. 在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库。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

 $.post(act, dataStr, function(data) {
    document.body.innerHTML = data;
});