使用jquery插入html不会';行不通
我正在建造一个简单的shoutbox 以下是html:使用jquery插入html不会';行不通,jquery,ajax,insert,innerhtml,Jquery,Ajax,Insert,Innerhtml,我正在建造一个简单的shoutbox 以下是html: <div id="shoutbox"> <form method="post" id="form" class="shoutbox-form"> <table> <tr> <td><label>User</label></td>
<div id="shoutbox">
<form method="post" id="form" class="shoutbox-form">
<table>
<tr>
<td><label>User</label></td>
<td><input class="text user" id="nick" type="text" MAXLENGTH="25" /></td>
</tr>
<tr>
<td><label>Message</label></td>
<td><input class="text" id="shout" type="text" MAXLENGTH="255" /></td>
</tr>
<tr>
<td></td>
<td><input id="send-shout" type="submit" value="Dodaj!" /></td>
</tr>
</table>
</form>
<div id="shoutbox-container">
<span class="clear"></span>
<div class=".shoutbox">
<div id="shoutbox-loading"><img src="css/images/loading.gif" alt="Loading..." /></div>
<ul>
</ul>
</div>
</div>
</div
但是显然messageList.html(数据[“响应”])不起作用,尽管firebug显示我的响应是:
{“响应”:“用户1测试2010-10-07 19:36:13 用户2测试22010-10-07 20:23:56 ”
如果在ajax中我没有success
,而是complete
我得到var data=JSON.parse(数据)代码>错误。有什么想法可以改变来解决这个问题吗
更新:
添加:
var c = data["response"];
console.log(c);
给我:
用户1测试2010-10-07 19:36:13 用户2测试22010-10-07 20:23:56
在firebug控制台中
我得到var data=JSON.parse(数据);错误
您引用的响应不是JSON,是吗?它是HTML。直接插入就可以了。您的调用应该将json设置为数据类型:
$.ajax({
type: "POST",
url: "/shouts/",
data: "action=refresh",
dataType: 'json',
success: function(data){
loading.fadeOut();
messageList.html(data["response"]);
messageList.fadeIn(2000);
}
});
这将使jQuery自动解析JSON,并将数据作为返回的对象提供给您
这可能会解决你的问题。至少它会为您处理JSON解释并防止跨浏览器问题。我喜欢跟踪最新的插件
为什么不将响应仅作为JSON,然后用新的
有关使用此插件的详细信息,请参阅
没有人注意到html中的错误
<div class=".shoutbox">
应该是:
<div class="shoutbox">
解决这个问题,看看jQuery的东西是否有效
按照其他答案中提到的编辑,您还应该将响应类型设置为JSON。这样可以避免对数据使用JSON.parse()
。但是,考虑到您在响应数据上使用了JSON.parse()
,这是不必要的。正确答案:
$(document).ready(function(){
var inputUser = $("#nick");
var inputMessage = $("#shout");
var loading = $("#shoutbox-loading");
var messageList = $(".shoutbox > ul");
function updateShoutbox(){
messageList.hide();
loading.fadeIn();
$.ajax({
type: "POST",
url: "/shouts/",
data: "action=refresh",
dataType: "json",
success: function(data){
loading.fadeOut();
var c = data["response"];
console.log(c);
messageList.html(c);
messageList.fadeIn(2000);
}
});
}
Poster正在用JSON.parse()解析响应(技术上是JSON),这使数据成为一个对象。无法直接附加/插入具有所需效果的对象。@sholsinger aww,你是对的,我完全忽略了{“response”:
部分,因为某种原因。+1对于你的答案,似乎是在检查所有答案后获得的方法。这确实似乎是个问题。但我如何解决这个问题?转换数据[“response”]字符串不起作用:/@mastodon不,应该没问题,我错了。即使您可以将类型更改为JSON以保存解析,响应也没问题。如果@sholsinger的方法不起作用,那么您需要检查var messageList=$(“.shoutbox>ul”)
根本不存在!好的,修复了这个问题。sholsinger如果你添加这个评论作为答案,我会给你一个分数。在将“完成”更改为“成功”并创建一个变量来存储响应数据后,一切都很好。建议使用更多jQuery内容(例如插件)是不负责任的。您是否修复了HTML,使其没有.shoutbox
类?…除非在IE 6和IE 7中没有可用的JSON对象(并且在类名上有很好的位置)
$(document).ready(function(){
var inputUser = $("#nick");
var inputMessage = $("#shout");
var loading = $("#shoutbox-loading");
var messageList = $(".shoutbox > ul");
function updateShoutbox(){
messageList.hide();
loading.fadeIn();
$.ajax({
type: "POST",
url: "/shouts/",
data: "action=refresh",
dataType: "json",
success: function(data){
loading.fadeOut();
var c = data["response"];
console.log(c);
messageList.html(c);
messageList.fadeIn(2000);
}
});
}