看起来我输错了类型或其他事情
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 :(得分:1)
我在尝试减少你的代码流程的时候做了一些重新格式化。通常,如果您需要在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
});
}