jQuery的AJAX错误的数据响应

jQuery的AJAX错误的数据响应

问题描述:

看起来,我得到了错误的类型或一些事情jQuery的AJAX错误的数据响应

function updateCart() 
{ 
var dataArray= []; 
var i=0; 
var item; 
$('.cd-cart .wrapper .body .product').each(function() 
{ 
    var item=new Array(); 
    i++; 
    var $element = $(this) 
    qty=parseInt($element.find('select').val()); 
    name=$element.find('h3 a').html(); 
    price=parseInt($element.find('.price1').text().replace('₽','')); 
    id=parseInt($element.attr('id').replace('product_','')); 
    image=$element.find('img')[0].src; 
item['id']=id; 
    item['price']=price; 
    item['name']=name; 
    item['qty']=qty; 
    item['image']=image; 

    dataArray.push(item); 
}); 
var jObject={}; 
jObject = JSON.stringify(dataArray); 
$.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 
$.ajax({ 
    url: '/updateCart', 
    type: 'get', 
    dataType:'json', 
    data: ({dataArray:jObject}), 
success:function(data){ 
      console.log(data); 
     }, 
     error:function(error){ 
     console.log(error); 
     } 
}); 
} 

服务器端返回了$ _GET; 我得到了服务器的响应:Object {dataArray:“[[],[]]”} 我能做些什么来获得正常响应? P.S dataArray是一个数组阵列

+0

我想我可以看到这里的问题,但为了调试的目的,因为我们知道您的服务器获取请求,并发送回它认为你可能注释掉你的AJAX调用,只是尝试打印响应dataArray到控制台。确保你发送的是你认为你始终是我的第一步用JavaScript :)。 –

+0

@DLowther这是数组看起来像一些数据[Array [0]] 0:Array [0] id:9 image:“items/2ktXCd2j1488052733.jpg”name:“Free”price:123 qty:2 JSON .stringify我得到了:[[]] –

我在尝试运行代码流时做了一些重新格式化。通常,如果您需要JavaScript中的关联数组样式分组,则您希望使用对象而不是数组。数组被索引,对象被键入。在我的示例中,我使用了构造函数来构建您的项目。您也可以let data = {};然后构建像data.id = 1这样的密钥。

// formatted for readability. 
function updateCart() { 
    const data = buildCart(); 
    let dataObj = JSON.stringify(data) 
    makeRequest('/updateCart', dataObj); 
} 

function buildCart() { 
    let data = []; 

    $('.cd-cart .wrapper .body .product').each(function() { 
    const $element = $(this); 
    let qty = parseInt($element.find('select').val()) 
    , name = $element.find('h3 a').html() 
    , price = parseInt($element.find('.price1').text().replace('₽','')) 
    , id = parseInt($element.attr('id').replace('product_','')) 
    , image = $element.find('img')[0].src; 

    data.push(new Item(id, price, name, qty, image)); 
    }); 

    return data; 
} 

function Item(id, price, name, qty, image) 
{ 
    this.id = id 
    this.price = price; 
    this.name = name; 
    this.qty = qty; 
    this.image = image; 
} 

function makeRequest(url, dataObj) 
{ 
    let token = $('meta[name="csrf-token"]').attr('content'); 
    let jqXHR = $.ajax({ 
    url: url, 
    type: 'GET', 
    headers: 'X-CSRF-TOKEN': token, 
    dataType: 'json', 
    jsonp: false, 
    data: {dataArray: dataObj} 
    }); 

    jqXHR.done(function(data, status, jqXHR) { 
    // success 
    }); 

    jqXHR.fail(function(jqXHR, status, error) { 
    // failure 
    }); 
} 
+0

谢谢,帮了很多。在此之前,我花了1.5个小时,并没有得出解决方案。 –