我在我的表单中使用国家和州的下拉列表。每当用户在下拉列表中选择国家/地区时,国家/地区的相应州将填入州下拉列表中。我使用AJAX调用填充下拉列表中的状态。问题是状态会在Mozilla中填充,但它在IE中不起作用。我想在jQuery中加载状态下拉列表中的状态时存在一些问题。我正在使用的jQuery代码是
$('select#edit-country').change(function(e) {
$.getJSON("loadContactUsStates",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
<!-----I guess the problem is with the below line------------------>
$("select#edit-state").html(options);
})//end json
});
答案 0 :(得分:12)
尝试使用附加代替 html 方法,详见此post。
修改强>
实际上,我自己也遇到过这个问题。对我来说,答案是首先调用empty,然后调用append,它与使用html方法具有相同的效果(我认为?)。
答案 1 :(得分:10)
另外(在我的情况下)检查你是否有有效的HTML,我有不匹配的标签,它在Firefox中工作,并没有在IE(6-8)
答案 2 :(得分:9)
添加到.ajax选项
cache:false,
答案 3 :(得分:4)
以下方法解决了我的问题:
$('Element ID OR Class').empty().html(string);
首先使用empty()
&amp;然后使用html()
答案 4 :(得分:4)
这对我有用:(我在IE7上测试过 - IE9和Chrome)
看起来IE的诀窍是使用DIV包装
原创html:
<div id="dynamicMenu"></div>
jQuery脚本:
$.ajax({
url: "/myapp/myajaxUrl.jsp",
type: "GET",
dataType: "html",
async: false,
success: function(msg) {
$("#dynamicMenu").html(msg);
});
msg类似于:
<TABLE>
<TBODY>
<TR>
<TD><LABEL for="dropdown1">OS type:</LABEL></TD>
<TD>
<SELECT id="dropdown1">
<OPTION selected value="">Select OS</OPTION>
<OPTION value="WIN">Windoze</OPTION>
<OPTION value="UX">Unix</OPTION>
<OPTION value="LX">Linux</OPTION>
</SELECT>
</TD>
</TR>
</TBODY>
</TABLE>
我试过.empty()。html()无济于事,但上面效果很好!
答案 5 :(得分:3)
如果您使用jquery解析xml,并且在IE中需要html(),请尝试以下操作:
var content =($ .browser.msie)? $(this).context.xml:$(this).html();
这解决了我的问题。我希望它也会帮助别人。
问候。
答案 6 :(得分:3)
经过数小时的挫折后,我意识到IE不支持除div之外的html5元素的jquery属性函数。我试图这样做:
success: function (response, textStatus, XMLHttpRequest) {
$response = $(response.replace(/\t/g, " "));
$responseHTML = $response.find("#pageContainer").html();
$container.html($responseHTML);
对于这个元素:
<nav id="pageContainer" class="content">
</nav>
通过将其更改为此,它解决了问题:
<nav>
<div id="pageContainer" class="content">
</div>
</nav>
答案 7 :(得分:1)
在收到带有 jQuery.ajax()函数的AJAX HTML-Request后,尝试使用 jQuery(html_result_data)解析结果时遇到了同样的问题。解决方案是剥离标题和所有标签并在html_result_data中“返回”,如下所示:
success: function( data ) {
// God this is ugly
data = data.split("<body>")[1].split("</body>")[0];
data = data.split("\t").join("").split("\r").join("").split("\n").join("");
data = jQuery( data );
...
}
答案 8 :(得分:1)
我遇到了同样的问题,发现最简单的解决方案是使用replaceWith()
函数。
答案 9 :(得分:1)
就我而言,改变jquery版本非常容易。我正在使用jquery-1.3.2而且我添加了这一行
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script>
而不是jquery-1.3.2导入。 在我的源代码中没有更改任何内容的情况下,.prepend函数在IE,FF和Chrome中完美运行。
答案 10 :(得分:1)
Jukums的评论让我尝试关闭ColdFusion调试输出,然后.html()在IE8中为我工作。强制关闭调试输出:
<cfsetting showdebugoutput="No">
答案 11 :(得分:1)
我在IE上遇到了一个问题:
$('#valor_total').html(valor_total);
其中id
与作为参数传递的变量具有相同的名称。改变身份证明工作得很好:
$('#div_valor_total').html(valor_total);
答案 12 :(得分:1)
对我来说,我只能将我的选择放在占位符div中,然后通过.html()进行写操作。对该div的整个陈述。完全有效。
答案 13 :(得分:1)
我刚遇到同样的问题,并且没有任何建议的修复程序有帮助。结果是传递的字符串中的制表符是原因。一旦我删除了所有这些,html()和append()都运行得很好。猜猜IE没有格式化的字符串.. hmpf。
答案 14 :(得分:0)
当html在IE中不起作用时,我遇到了同样的问题。
我相信如果您的html无效
,它就无效示例:
对于我的情况,我使用没有关闭标签的div。所以无效的HTML可能是IE的罪魁祸首
答案 15 :(得分:0)
在我的情况下,我必须更改<figure>
标记的选择器。这就是我所拥有的:
HTML:
<figure id="imagen">...</figure>
JS(不起作用):
$("#imagen").html(res);
我不得不替换为:
HTML:
<div id="imagen">...</div>
JS(有效!):
$("#imagen").html(res);
答案 16 :(得分:0)
在我的情况下,问题在于我在正在加载的数据中评论我的javascript的方式。
// Works fine
/* Works fine */
<!-- This causes a syntax error in IE -->
我之前从未在IE中评论过这样的问题,只有在使用ajax将其加载到现有页面时。其他浏览器也没问题。
答案 17 :(得分:0)
将no cache属性添加到控制器为我修复此问题。
答案 18 :(得分:0)
由于此处未提及解决方案: 在激活兼容模式时,我在IE8中遇到了同样的问题。解决方案是将jQuery对象传递给.html()函数,如下所示:
$("select#edit-state").html($(options));
如果选项是jQuery对象并且也构建为一个,那么这不是问题。但是在上面的例子中,这应该可以解决问题 - 至少对我来说这样做了。
答案 19 :(得分:0)
您使用的是1.4.2吗?使用IE中的无效缓存条目的cleanData
方法存在问题。可以找到错误和相应的修复程序here。这会影响对.html()
答案 20 :(得分:0)
在IE8中,转到工具 - &gt; 互联网选项 - &gt;然后选择高级标签。然后单击重置以重置所有Internet Explorer设置。
我以为我的代码有问题,但问题是IE8。这是一种享受。
祝你好运,希望这会有所帮助。
答案 21 :(得分:0)
在我的情况下,返回的数据也应该在语法上正确。 我有一些无法匹配的标签,如未关闭的标签
或..等等
检查所有数据是否正确
如果这是一个ajax请求,那么调试的快速方法是在您填充的区域外添加一个文本区域,并使用返回的数据填充文本区域。然后检查数据是否存在不一致。 Jquery.html可以正常使用IE
答案 22 :(得分:0)
检查返回数据中的任何JavaScript在语法上是否正确。
我有一个带尾随逗号的JSON选项对象,这足以让IE拒绝运行它。
答案 23 :(得分:0)
另请注意,如果在选择器中使用tagName前缀,则比使用id更慢。
在您的情况下,只需使用$("#edit-state").append(options)