.html 工作,但 ajax 请求后不出现文本

Posted

技术标签:

【中文标题】.html 工作,但 ajax 请求后不出现文本【英文标题】:.html work, but text not appear after ajax request 【发布时间】:2013-01-31 03:36:12 【问题描述】:

在 ajax 调用之后,我将 div buf 附加到某个消息框,但重新打开对话框后会出现文本。在 Chrome、firefox、IE 8 上,这可以正常工作,但在 ie 7 中则不行。

已编辑: 我在单击链接时打开了对话框窗口。然后我做ajax请求并收到一条消息。单击对话框中的按钮后,此消息应出现在对话框窗口中(在某些 div 中)。但在 IE7 中,对话框窗口重新打开后出现消息。

$("#promised_pay_dialog").dialog(
        buttons: 
            "some button": function()
                if ($('#confirm').is(':checked')) 
                    $.ajax(
                        url: 'ajax/promisedPayment',
                        type: "POST",
                        data: 
                            subsId:$("#sid").val()
                        ,
                        success: function(buf)
                            $('#message_box').html(buf);
                            return false;
                        
                    );
                
                else 
                    alert("some message");
                
            ,
            "some button": function() 
                $(this).dialog("close");
            
        ,
        show: 
            effect: "blind",
            duration: 1000
        ,
        hide: 
            effect: "explode",
            duration: 1000
        ,
        modal: true,
        resizable: false,
        width: 550,
        height: 250
    );

解决了问题,但没有令人满意:

点击链接后,调用函数createDialog(""),不带参数。 ajax 请求后,接收消息并调用createDialog(buf)。但我认为这不是一个好的解决方案。有什么想法吗?

function createDialog(mess)
    $('#message_box').html(mess);
    $("#promised_pay_dialog").dialog(
        buttons: 
            "some button": function()
                if ($('#confirm').is(':checked')) 
                    $.ajax(
                        url: 'ajax/promisedPayment',
                        type: "POST",
                        data: 
                            subsId:$("#sid").val()
                        ,
                        cache:false,
                        success: function(buf)
                            createDialog(buf);
                        
                    );
                
                else 
                    alert("some message");
                
            ,
            "some button": function() 
                $(this).dialog("close");
            
        ,
        show: 
            effect: "blind",
            duration: 1000
        ,
        hide: 
            effect: "blind",
            duration: 1000
        ,
        modal: true,
        resizable: false,
        width: 550,
        height: 250
    );

【问题讨论】:

请改进文字,无法理解。 可能与jquery版本有关?我知道在 2.0 中放弃了对旧版本的一些支持 我有对话框窗口,在“a href”点击时打开。比我做 ajax 请求并获取消息。单击对话框中的按钮后,此消息应出现在对话框窗口中(在某些 div 中)。但是在 IE7 中重新打开对话框窗口后会出现消息。 试试 jQuery 1.7.x 我发现它是迄今为止最稳定的版本。特别是关于 IE 版本 好像你的对话框没有刷新...删除所有效果再试一次... 【参考方案1】:

.html() 知道 IE6-8 的问题

尝试替换以下内容

$('#message_box').html(buf);

$('#message_box').empty().html(buf);

【讨论】:

以上是关于.html 工作,但 ajax 请求后不出现文本的主要内容,如果未能解决你的问题,请参考以下文章

Js Validator插件远程规则,用于在Ajax调用后不刷新页面不工作的唯一值检查

jQuery tablesorter 插件在 AJAX 调用后不起作用

jquery移动列表视图样式在ajax调用后不应用样式

ServerXMLHTTP请求返回数据但301重定向后不返回最终页面的url

jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示

Ajax 请求期间出现 500 错误