【问题标题】:jQuery ajax calls (.get, .post., .load etc), return data and IE problemjQuery ajax 调用(.get、.post.、.load 等)、返回数据和 IE 问题
【发布时间】:2011-06-14 11:17:36
【问题描述】:

我在使用 jQuery 1.3.2 时注意到这本身并不是一个问题

我花了相当长的时间研究、寻找并最终测试(应该首先这样做),这是我发现的:

假设您有一个小文件(称为 example.php):

 <div>Hello world</div></div>

并在主文件中进行此特定调用

<div class="result"></div>
<script type="text/javascript">
$(document).ready(function(){
  $.get('example.php', function(data){
     $('.result').html(data);
  });
});
</script>

现在这将适用于除 IE8/7 之外的每个浏览器(尚未在 IE9 上测试过)。那是因为接收到的数据没有被解析为 html,尽管它接收正确。解决此问题的唯一方法是从“example.php”文件中删除附加的 标记。这将解决问题。 这可能看起来很简单,但是当您在 get 调用中有复杂的 *.php / *.html 文件时,这可能会变得非常混乱,并且是一场需要解决的噩梦。

注意: 我尝试在 stackoverflow 中搜索这个特定问题,但没有找到明确的答案或解决方案。因此,我已经发布了这个特定的问题和解决方案。考虑到自己在这方面是一个NOOB,如果有人指出已经有对此的解释,请告诉我,我将删除此帖子。

【问题讨论】:

  • 也许尝试使用 $.ajax 并将数据类型设置为“文本”而不​​是使用 $.get?
  • 首先,当前的jQuery版本是1.6,而不是1.3.2。其次,如果您返回的 html 代码与您提供的一样(即&lt;div&gt;Hello world&lt;/div&gt;&lt;/div&gt;),那么您应该开始验证您返回的 HTML,因为那不是有效的。 提示有两个div结束标签。
  • @Shef 我认为他知道这一点,他实际上是在问如何避免首先验证 html
  • 我知道当前的版本是1.6,但是请记住,很多网站和一些插件仍然使用1.3.2或1.4版本的jQuery(即jQuery Tools插件集)。这是一个通知而不是一个问题,因为我在这个特定区域发现了问题,如果有人发现自己处于类似情况,最好检查标签和 html 有效性。顺便说一句,谢谢你们。

标签: javascript jquery internet-explorer post get


【解决方案1】:

试试

$('.result').html("");
$('.result').append(data);

它可能会删除无效标签 但考虑将 iframe 用于容器 .result

【讨论】:

  • 谢谢,但这并没有真正起作用。 IE 无法将“数据”变量识别为 html
  • 好吧,我想 IE 不会那么容易上当
【解决方案2】:

如果您需要使用 jQuery 对 ajax 调用进行更多控制,您应该使用 $.ajax 调用本身并操作参数。具体设置 dataType: 为 'text'

http://api.jquery.com/jQuery.ajax/

【讨论】:

  • 不错,我会尝试测试一下。
  • 试用了这部分。 IE 从字面上开始相信发送的数据是文本并将其显示为文字文本。清理 html(删除
    或任何其他结束标记)的方法是目前最好的方法。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2011-05-25
  • 1970-01-01
  • 2015-08-02
  • 2012-04-26
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多