나는 내 웹 페이지에 코멘트에 아약스를 추가하는 중입니다. 다음 는 기능과 뷰 파일입니다web2py에서 아약스 응답
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>
문제는 내가 새로운 코멘트를 게시 할 때, 전체 사업부는 내가 for 루프에 주어진 모든 스타일링없이 새로운 콘텐츠로 대체한다는 것입니다
내가 스크린 샷의 링크를 준 : 을이 게시 코멘트 전에이다 : https://skydrive.live.com/redir?resid=AFF5DF0EB4A5BCD5!122&authkey=!AFg6utSsGLyYRG4&v=3&ithint=photo%2c.png
이 인 코멘트를 게시 후 : https://skydrive.live.com/redir?resid=AFF5DF0EB4A5BCD5!123&authkey=!AJyroKLQLp5ssPs&v=3&ithint=photo%2c.png
,536,913,632을 10의견을 게시 한 후 Ajax 응답이 div 대상의 내용을 대체합니다. 게시하기 전에 표시되는 것과 같이 응답을 표시하고 표시하는 방법은 무엇입니까?
안녕하세요, 위의 코드를 사용해 보았습니다.하지만 새 값이 표시되지 않고 있지만, 페이지가 새로 고침되어 도움을 요청할 때 표시됩니다. 한 가지 더 묻습니다. 다른 구성 요소 안에 구성 요소를 추가 할 수 있습니까? 그러면 중첩 된 구성 요소 내부의 양식이 제출되면 외부 구성 요소도 새로 고쳐집니다. ... 다시 한 번 도움에 감사드립니다 !! –
위의 코드는 잘 작동합니다 (created_by 값이 현재 로그인 한 사용자의 ID 인 경우 새 값이 즉시 표시됨). 당신이 다른 것을 관찰한다면 그것은 어떤 식 으로든 코드를 변경했기 때문일 것입니다.(위의 몇 가지 오타를 수정했지만 예외를 생성했을뿐 사용자가 관찰 한 동작이 아닙니다.) – Anthony
네, 구성 요소를 중첩 할 수 있어야한다고 생각하지만 중첩 된 구성 요소 내부의 양식을 제출하면 외부 구성 요소가 새로 고쳐지지 않습니다. 위의 예가 더 나은 방법입니다. – Anthony