2016-08-15 57 views
0

我想用ajax这样无法使用AJAX

$('#category').click(function(event) { 

    category = $("input[name='category']:checked").data("id"); 
    var Html = ""; 

    $.ajax({ 
    type: "POST", 
    data: { 
     'csrfmiddlewaretoken': '{{csrf_token}}', 
     category: category 
    }, 
    url: "{% url 'data_entry' %}", 
    success: function(data) { 

     console.log(data); 

     $.each(data, function(key, object) { 
     $.each(object, function(key, values) { 
      Html = "<div><label>" + object + "</label>" 
      $.each(values, function(key, value) { 
      Html += "<div style='float:left'><input name='" + value + "' type='checkbox' value='" + value + "'><span>" + value + "</span></div>" 
      }); 
     }); 
     }); 

     console.log(Html) 
     $('#attribute').html(Html) 
    }, 
    error: function(response, error) {} 
    }); 
}); 

结果我得到得到的结果存储结果是一个数组,看起来像这样

[Object, Object] 
0 
: 
Object 
color 
: 
Array[3] 
0 
: 
"BLUE" 
1 
: 
"RED" 
2 
: 
"YELLOW" 
length 
: 
3 
__proto__ 
: 
Array[0] 
__proto__ 
: 
Object 
1 
: 
Object 
size 
: 
Array[6] 
0 
: 
"S" 
1 
: 
"M" 
2 
: 
"L" 
3 
: 
"XL" 
4 
: 
"XXL" 
5 
: 
"XXXL" 
length 
: 
6 
__proto__ 
: 
Array[0] 
__proto__ 
: 
Object 
length 
: 
2 
__proto__ 
: 
Array[0] 

我试图环通过数组的所有值并将其存储在变量Html中,但它只显示最终的迭代值,即大小数组中存在的值。什么可能是错误的,我该如何解决此错误。

+0

顺便数据,您需要添加'HTML + ='

';'到''.each(object,function(key,values))''callback的末尾,因为您有一个'
'('Html =“”+ object +“”')你没有关闭。 – Matt

+0

如何从javascript对象中获取像大小和颜色的数组名称? –

回答

3

每次你这样做的时候重新变量:

Html = "<div><label>"+object+"</label>" 

所以它永远只打算从(外)循环的最后一次迭代具有的值。这听起来像你意味着追加,而不是分配:

Html += "<div><label>"+object+"</label>" 
+0

哦,我得到了它的感谢...我也需要问我怎样才能从JavaScript对象中获取像大小和颜色的数组名称? –

0

要使用的JSON你应该添加dataType: "json"你Ajax请求

$.ajax({ 
    url: url, 
    data: data, 
    type: 'POST', 
    dataType: 'json', 
    success: function(data){ 
    //now you can use it as json not as a string as you did before, so all your methods will work 

    } 
})