【问题标题】:jQuery load new password via ajax not working in IEjQuery通过ajax加载新密码在IE中不起作用
【发布时间】:2012-03-12 10:09:42
【问题描述】:

我有以下代码,但它不适用于 IE,特别是 9。也许还有其他版本。

该函数正在运行,如果我发出警报,它会触发,但在 IE 中,当再次单击按钮时它不会替换文本。在其他浏览器中,每次用户单击按钮#gen_password 时,它都会从远程文件重新加载新密码。在 IE 中,它永远不会替换它。

谁能看出问题所在?

谢谢。

$("#gen_password").live('click',function(){

    $("#password_messg").html('');
    var before = $("#gen").html();
    $("#gen").html("<image alt='Loading...' src='ajax_loader.gif' />");
    $("#password_container").load('random.php', function(){
        $("#gen").html(before);
    });
    $("#password_container").show();
    return false;
});

这是它所作用的 HTML:

<fieldset class="blue_border"><p id="password_messg" class="message"></p><legend>Change password</legend>
    <form method="post">
        <dl class="zend_form">
            <dt></dt>
            <dd>
                <input type="hidden" name="pwpid" id="pwpid" value="<?php echo $this->login_data['id'];?>" />
                <span id="password_container" class="disabled">&nbsp;</span>
                <input type="hidden" name="savepw" id="savepw" value="1" />
            </dd>
            <dt></dt>
            <dd id="gen">
                <button id="gen_password">Generate a Password</button>
                <button id="save_password">Save</button>
            </dd>
        </dl>
    </form>
</fieldset>

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您在 jQuery 中创建的 HTML 无效 - &lt;image&gt; 可能应该是 &lt;img&gt;(并且 IE 对将无效 HTML 插入 DOM 非常挑剔)。大概应该读:

    $("#gen").html('<img src="ajax_loader.gif" alt="Loading" />');
    

    【讨论】:

    • 嗨,哎呀,没发现。不过还没有解决,也许还有其他问题? :( 我尝试插入一个简单的

      test

      以确保它不是图像部分...
    • 控制台中完全没有错误。我认为清除旧内容的逻辑存在问题,也许是用ajax请求中的新内容替换。 :S
    • random.php 究竟返回了什么?也许 IE 也有这个问题。
    • 嗨,random.php 将返回一个字符串,例如breaker191,不包含在任何引号或容器中,只是那些字符。
    • 嗯,不知道,但也许这对你有帮助:stackoverflow.com/questions/1061525/…
    【解决方案2】:

    我认为您的 HTML 不正确。你应该试试

    var img = $("<img>",{src: 'ajax_loader.gif', alt: 'Loading'});
    $("#gen").html(img);
    

    【讨论】:

    • HTML 很好,这不是问题,标签的
    • @i-CONICA 当您说单击按钮时它不起作用时,我不明白这部分内容,再次,您的意思是第一次有效而第二次在 IE 中无效?
    • 默认情况下,在页面加载时,显示密码的元素是隐藏的,当单击按钮时,会显示该元素,其中包含一个新的随机密码。在 IE 中,元素会显示,但包含相同的密码并且永远不会获得新密码。所以 $("#password_container").show();显示容器,但它仍然包含相同的密码,它上面的 jQuery 代码不能正常工作。
    • @i-CONICA 你试过用 $.get() 代替 $('#password_container').load() 吗?
    【解决方案3】:

    我有同样的问题,但它只是; javascript 代码中缺少。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      相关资源
      最近更新 更多