Ajaxを使用してサーバーに投稿されたフォームに値を戻すにはどうすればよいですか?ビューでJavaScriptでJSONデータ構造を解析できません
(下図参照)、私は物事をテストするために、単純なデータ構造を返しています:
def detail(request, widget_id):
widget = get_object_or_404(Widget, pk=widget_id)
if request.method == 'POST':
form = WidgetDetailsForm(request.POST, instance=widget)
if form.is_valid():
form.save()
return HttpResponseRedirect(request.path) # Redirect after POST
else:
if request.is_ajax():
response_dict = {
'page': 1,
'total': 2,
'rows': 3
}
json = simplejson.dumps(response_dict)
return HttpResponse(json, mimetype='application/json')
else:
form = WidgetDetailsForm(instance=widget)
params = {}
params['widget'] = widget
params['form'] = form
return render_to_response('widgets/detail.html', params,
context_instance=RequestContext(request))
JavaScriptのテンプレートでは、次のとおりです。
<script type="text/javascript">
/* <![CDATA[ */
// Wait for the DOM to be loaded
$(document).ready(function() {
// Bind 'myForm' and provide a simple callback function.
$('#updateform').wl_Form({
onSuccess: function(data, status){
alert(data);
alert(data.page);
alert(data.rows);
alert(data.total);
},
"status": false,
"confirmSend": false
});
});
/* ]]> */
</script>
私はから次を得ます警告文。
{"rows": 3, "total": 2, "page": 1}
undefined
undefined
undefined
なぜdata.page
、data.rows
、およびdata.total
はundefinedを返すのですか?
:
のようなものを試してみてください。あなたはデータを正常に戻しました。しかし、バイト(この場合は、JSON形式の何かを表す文字列として解釈される)だけをインターネット経由で送信することができます。受信側では、この結果を解釈する必要があります。あなたの質問に「解析できません...」と表示されているので混乱していますが、コードはデータを解析する**試み**を実際には行いません。 –