thank you so much for your hints, anthony, but, pardon me, the results on
the form components is loading..., the page didn't show an error, but keep
loading..., is there something i missed in my code?

e.g.
*=== controller ===*

blog = db.blog
blog_comment = db.blog_comment
blog_comment_blog_id = db.blog_comment.blog_id
blog_comment_active = db.blog_comment.is_active

def blog_comment_add():
    return __add_2(blog, blog_index, blog_comment, blog_comment_blog_id)

@auth.requires_login()
def __add_2(table_0, index_link, table_1, field):
    page = table_0(request.args(0)) or redirect(URL(index_link))
    field.default = page.id
    form = crud.create(table_1, message = T('Record Inserted'),
                       next = URL(args = page.id))
    *response.js = 'web2py_component(action = "%s", target = "%s")' *
*                  % (URL('blog_comment_show.load'), *
*                  'comments_%s hidden' % page.id)*
    return dict(page = page, form = form)

*=== view ===*

{{=LOAD('default', 'blog_comment_show.load', args = page.id, ajax = True)}}
*{{=LOAD('default', 'blog_comment_add.load', args = page.id, *
*        target = 'comments_%s hidden' % page.id, ajax = True)}}*

*=== blog_comment_show.load ===*

{{if len(results):}}
    <span onclick = "jQuery('.comments_{{=page.id}}').slideToggle('slow');">
    {{=A(T('Comments (%s)' % len(results)), _href = '#')}}
    </span>

    <div class = "comments_{{=page.id}} hidden">
    {{for blog_comment in results:}}
        {{=SPAN(db.auth_user[blog_comment.created_by].first_name, T(' on
'),
                blog_comment.created_on, T(' Said '),
 blog_comment.comment)}}
        {{=BR()}}
        {{=SPAN(blog_comment.like,
                _id = 'blog_comment_like_%s' % blog_comment.id)}}
        {{=SPAN(T('People Like This'))}}

        <span onclick="jQuery('#id').val('{{=blog_comment.id}}');
                       ajax('{{=URL('blog_comment_like.load')}}', ['id'],
'blog_comment_like_{{=blog_comment.id}}');">
        {{=A(T('Like'), _href = '#')}}
        </span>
        {{=BR()}}
    {{pass}}
    </div>
{{else:}}
    {{=DIV(B(T('No Comment Posted Yet')))}}
{{pass}}

*=== blog_comment_add.load ===*

{{=DIV(A(T('Post a Comment'), _href = '#'), _class = 'post',
       _onclick = "jQuery('.form_%s').slideToggle('slow');" % page.id)}}

{{=DIV(form, _class = 'form_%s hidden' % page.id,
       _onsubmit = "ajax('blog_comment_add', [], 'comments_%s hidden');" %
page.id)}}

On Sat, Jun 11, 2011 at 8:28 AM, Anthony <abasta...@gmail.com> wrote:

> Maybe try having the post comment action return some JS via response.js
> that calls the web2py_component JS function to update the list component:
>
> def post_comment():
>     # do some stuff
>     response.js='web2py_component(action="%s",target="%s")' %
> (URL('list_comments.load'), 'comment_list')
>     return dict(...)
>
> def list_comments():
>     # code to list comments
>
> In view:
>
> {{=LOAD('post_comment.load', ajax=True)}}
> {{=LOAD('list_comments.load', target='comment_list', ajax=True)}}
>
>
> See
> http://web2py.com/book/default/chapter/13#Client-Server-Component-Communications
> .
>
> Anthony
>
> On Friday, June 10, 2011 8:44:26 PM UTC-4, 黄祥 wrote:
>
>> hi,
>>
>> is ajax can work in components? i mean let say that i separated the
>> comment into 2 components, 1 for list of view comments and the other
>> is form to post the comment. i have a problem when i post the comment
>> using the form, the data that have been posted is not directly change
>> on list of comments (the other components), i must refresh my browser
>> many times so that the list comments can show the latest posted
>> comment. is there any clue or solution to implement ajax that works in
>> other components?
>>
>> any hints, suggestion is greatly appreciate.
>> thank you very much.
>
>

Reply via email to