When I try to access my action via myapp/statusbar/userEdit I see the
form as expected. However, when I try it at myapp/statusbar/
userEdit.json I get a "JSON serialization error".
This is my controller:
def user_widget():
# return table of all users incl. their roles
output = T('No users found')
rows = db().select(db.auth_user.id, db.auth_user.username,
db.auth_membership.id, db.auth_membership.group_id,
left=db.auth_membership.on(db.auth_membership.user_id==db.auth_user.id))
if len(rows) > 0:
table_rows = []
for row in rows:
table_rows.append([row.auth_user.username,
row.auth_membership.id, row.auth_membership.group_id, A(T('edit'),
_href='#', _id='edit-user-' + str(row.auth_user.id), _class='edit-
user')])
output = TABLE(THEAD(TR(TH(T('Username')), TH(T('Membership
ID')), TH(T('Group ID')), TH(T('Edit')))), *[TR(*myrows) for myrows in
table_rows], _id='user-widget-users-table')
script = SCRIPT('$(function() { \
$("#user-widget-users-table a.edit-
user").click(function() { \
jQuery.ajax({ \
type: "POST", \
url: "'+
URL(r=request,c='statusbar',f='userEdit') +'", \
data: "id=" + $(this).attr("id"),
\
success: function(msg){ \
$("#settings-
content").html(msg.html); \
$("#settings-
title").html(msg.title); \
} \
}); \
}); \
});', _language='javascript')
output.append(script)
return {'html':str(output), 'title':T('User settings')}
def userEdit():
# simplified - should return edit form a specific user later
form=SQLFORM.factory(db.auth_user,db.auth_membership)
return {'html':form, 'title':'test'}
The form contains two textfields and two selection fields and a submit
button. My statusbar/userEdit.json view ist the default one.
Any suggestions?