簡體   English   中英

無法解析 JavaScript 中的 JSON 數據結構

[英]Can't parse JSON data structure in JavaScript

如何將值傳遞回使用 Ajax 發布到服務器的表單?

在視圖中(如下所示),我只是返回一個簡單的數據結構來測試事物:

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.rowsdata.total返回 undefined?

因為data是一個字符串(JSON) - 請注意您的第一個alert()的 output 。

嘗試類似:

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

也許做

data = JSON.parse(data);

並且不要忘記為舊版瀏覽器包含json2.js嗎?

這取決於wl_Form的作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM