Ajaxを使用してweb2pyでコントローラーを呼び出すコントローラーメソッドと対応するビューを作成しようとしています。アイデアは、データベースに小さな更新を行い、Ajaxを使用してターゲットdivに単純な更新されたメッセージを返すことです。以下はコントローラーの方法です。
def deleteajax():
recid1 = request.vars.recid
reptype1 = request.vars.reptype
if recid1 == None:
out = 'Missing Param : recid'
return out
if reptype1 == None:
reptype1 = 'pr'
if reptype1 == 'pr':
row = db2(db2.prs_mailed.id==recid1).select().first()
return str(row.id)
elif reptype1 == 'tb':
row = db2(db2.tbs_mailed.id==recid1).select().first()
else:
return 'Please provide the parameter : rep'
if row['action'] == 'D':
out = 'Already deleted'
return out
else:
row.update_record(action='D')
out = 'Deleted Successfully!'
return out
これが私がビューから同じものを呼んでいる方法です:
<form>{{
response.write('<input type="hidden" name="recid" value="'+str(response._vars['prs']['id'][k])+'"/>',escape=False)}}
<input type ='button' name="del" value = "D" onclick="ajax('deleteajax', ['reid'], 'target')" />
<div id="target"></div>
</form>
POST呼び出しを使用してコントローラーを個別にテストしましたが、これは機能します。AJAX呼び出しでさえ機能し、ターゲットdivに「MissingParam:recid」のようなエラーメッセージを表示します。各ステートメントを終了した後、より多くのメッセージを表示するようにコントローラーを変更してみました。ただし、データベース操作を投稿すると、コントローラーからのコマンドは実行されず、ターゲットdivに何も表示されません。どこが間違っているのですか?