我正在爲我的網頁中的評論添加ajax。 以下是功能和視圖文件web2py中的ajax響應
def normalajax():
news=db(db.newsfeed.id>0).select(orderby=~db.newsfeed.created_on)
return dict(news=news)
def new_post():
form=SQLFORM(db.newsfeed)
if form.accepts(request.vars, formname=None):
news=db(db.newsfeed.created_by==auth.user_id).select(orderby=~db.newsfeed.created_on)
return DIV(news)
elif form.errors:
return TABLE(*[TR(k, v) for k, v in form.errors.items()])
{{extend 'layout.html'}}
<form id="myform">
<input name="body" id="body" />
<input type="submit" />
</form>
<script>$('textarea').css('width','600px').css('height','50px');</script>
<script>
jQuery('#myform').submit(function() {
ajax('{{=URL('new_post')}}',
['body'], 'target');
return false;
});
</script>
<div id="target">
{{for post in news:}}
<div style="background: #ffffff; margin-bottom: 5px; padding: 8px;">
<h3>{{=db.auth_users[post.created_by].first_name}}</h3> On {{=post.created_on}}:
{{=MARKMIN(post.body)}}
</div>
{{pass}}
</div>
的問題是,當我發表新評論,整個DIV被新的內容所取代,沒有它我在給for循環中的所有造型
我已經給了截圖的鏈接: 這是張貼評論之前: https://skydrive.live.com/redir?resid=AFF5DF0EB4A5BCD5!122&authkey=!AFg6utSsGLyYRG4&v=3&ithint=photo%2c.png
發佈評論後,Ajax響應替換DIV目標,如何訪問響應並顯示它像它在發佈前dislayed的內容...
嘿,我試着使用上面的代碼,但新的價值並沒有得到顯示,雖然它正在提交和顯示當我重新加載頁面,感謝您的幫助!...我想再問一件事,我們可以在另一個組件中添加一個組件,如果我們可以在嵌套組件內部的表單被提交時,外部組件是否會刷新? ...再一次,非常感謝您的幫助! –
上面的代碼適用於我(新值立即顯示,只要created_by值是當前登錄用戶的ID)。如果你觀察到不同的東西,那很可能是因爲你以某種方式改變了代碼。(注意,我確實糾正了上面的一些錯別字,但它們會產生異常,而不是你觀察到的行爲。)。 – Anthony
是的,我相信你應該能夠嵌套組件,但是當嵌套組件中的表單被提交時,它不會刷新外部組件。上面的例子是一個更好的方法。 – Anthony