Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jqueryajax错误的数据响应_Php_Jquery_Ajax - Fatal编程技术网

Php jqueryajax错误的数据响应

Php jqueryajax错误的数据响应,php,jquery,ajax,Php,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=$el

看起来我打错了字或是出了什么事

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);
      }
}); 
}
服务器端得到返回$\u-GET; 我从服务器得到这个响应:对象{dataArray:[[],[]]“} 我该怎么做才能得到正常的反应?
P.S dataArray是一个数组的数组

当我试图运行代码流时,我在这里进行了一些重新格式化。通常,如果需要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
  });
}

我想我可以看到这里的问题,但出于调试目的,因为我们知道您的服务器正在接收请求并将其视为响应发送回,您可能可以注释掉AJAX调用,然后尝试将dataArray打印到控制台。确保你发送的是你认为你是什么,这是我使用javascript的第一步:)。@dlow这是数组与一些数据的样子[array[0]]0:array[0]id:9 image:“items/2ktXCd2j1488052733.jpg”name:“Free”price:123 JSON.stringify之后的数量:2我得到:[[]]谢谢,帮助很大。在此之前,我花了1.5个小时在这上面,没有找到解决方案。