我有以下HTML和后续jQuery,它在检索到JSON请求后附加相关的HTML元素。
此实施适用于Google Chrome + Android浏览器+ Safari,但不会填充Firefox或Internet Explorer 9中的数据。
* * 适用于Chrome,Android浏览器,Firefox 4 ...在Firefox 3.x和IE中无效。
静态HTML:
<header class=line>
<div class="unit size3of4">
<h2 class="fullname"></h2>
<h4 class="nickname"></h4>
</div>
</header>
jQuery代码:
<script>
function load_user_info() {
var content_url = 'rest.api.url.com';
$.getJSON(content_url, {id:'11xx1122xx11'}, function(data){
console.log(data);
$.each(data, function(key, value) {
if (key == "fullname") {$('.fullname').append(value);}
else if (key == "nickname") {$('.nickname').append(value);}
});
});
}
load_user_info();
</script>
稍微混淆了浏览器之间的行为。我可以保证JSON请求返回两个变量:fullname&amp;昵称并确认了这个
在使用FireBug插件的Firefox中,我看到了console.log(data)
的结果
在Chrome中,我会看到console.log(data)
的结果以及全名&amp;的成功显示JSON请求后的HTML中的昵称。
如果有帮助,请使用jQuery 1.6.1 ......
JSON输出:
{"fullname":"johnny fartburger", "nickname":"jf"}
答案 0 :(得分:3)
我对你正在做的事情感到有些困惑。我认为以下代码:
$.each(data, function (key, value) {
if (key == "fullname") {
$('.fullname').append(value);
} else if (key == "nickname") {
$('.nickname').append(value);
}
});
可以更容易地表示:
$('.fullname').append(data.fullname);
$('.nickname').append(data.nickname);
我不知道这是否能解决你的问题,但肯定会有所改善。
答案 1 :(得分:1)
由此产生的问题来自于IE中未检索到的实际JSON数据。搜索的小时数和小时数问题是jQuery本身不支持XDomainRequest
,特别是在$.getJSON
请求中
http://bugs.jquery.com/ticket/8283
最后,我编写了一个try {} catch {}
语句,检查是否$.browser.msie
,如果是,请不要使用$.getJSON
来检索结果,而是:
if ($.browser.msie) {
var xdr = new XDomainRequest();
xdr.open('GET', url);
xdr.onload = function() {
var data = $.parseJSON(this.responseText);
show_data(data);
}
xdr.send();
} else {
$.getJSON(url, function(data){
show_data(data);
});
}
所以...... 结论在IE(7/8/9)和Firefox(3/4)中附加可以正常工作但在AJAX结果不是时被退回。感谢大家的帮助和见解。
答案 2 :(得分:0)
.append()
将HTML字符串作为参数附加到现有内容。您可能希望替换元素的文本,而是使用.text()
或.html()
,具体取决于value
变量的内容。
答案 3 :(得分:0)
.append(value)
不是很安全(例如,如果value =“div”)
您应该使用.html(value)
答案 4 :(得分:0)
data
包含什么?我认为.append
用于附加元素。如果数据是纯文本,那可能不起作用(实际上没有尝试过)。 Chrome使用不同的引擎,可能会将文本转换为DOM中的textnode。
使用.text()
或.html()
设置元素的内容。
答案 5 :(得分:0)
作为appendTo
的替代方案,也尝试使用.text()