2011-07-23 32 views
0

如何將值傳遞迴使用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.pagedata.rows,並data.total返回undefined?

回答

2

因爲data是一個字符串(JSON) - 請注意您的第一個輸出alert()

嘗試類似:

$('#updateform').wl_Form({ 
    onSuccess: function(response, status){ 
     var data = $.parseJSON(response); 
     alert(data); 
     alert(data.page); 
     //... 
    } 
}); 
+0

沒錯。你很好地通過了數據。但是隻有字節(在這種情況下,解釋爲一個字符串,代表JSON格式的東西)可以通過互聯網傳輸。在接收端,你需要解釋這個結果。我很困惑,因爲你的問題說「不能解析...」,但是代碼實際上並沒有做任何**嘗試**來解析數據。 –

0

也許做

data = JSON.parse(data); 

不要忘記做包括json2.js舊的瀏覽器?

這取決於wl_Form的功能。