繁体   English   中英

如何通过Ajax从HTTP请求中的对象数组中提取laravel控制器中的数据

[英]How to extract data in laravel controller from object array in HTTP request passed via ajax

我在laravel 5.2中开发POS系统。从我的销售页面中,我要发送一个包含1个帐单信息对象和1个产品列表对象数组的数组。我的控制器正确接收了数据,但我不知道如何提取他们在我的控制器。我已经通过laravel文档和PHP。

我努力了。

$data = $request->all();
$billinfo = $data[0]->total;
$productlist=$data[1];

我也尝试过

$billinfo = $data[0]->object->total;

我也尝试过

$billinfo = $data[0]->object[0]->total;

我也尝试过

$billinfo = $data[0]->bill->total;

如果我再次将请求发送到这样的视图:

$data = $request->all();
return json_encode($data);

然后在consol中打印响应。consol提供以下输出:

Object {id: Array[2]}
>id:
>Array[2]
  0:Object
    card_number:"0"
    customer_id:"0"
    date:"06/18/2016"
    discount:"0"
    grandtotal:"563.5"
    payment_method:"cash"
    seller_id:""
    tax:"15"
    total:"490"
    __proto__:Object
  1:Array[2]
    0:Object
      stock_id:"5"
      subtotal:"244"
      unit:"2"
      unit_price:"122"
      __proto__:Object
    1:Object
      stock_id:"4"
      subtotal:"246"
      unit:"2"
      unit_price:"123"

我的ajax发送功能是

function ajaxsave(obj)
  {  
    var token=$('input[name=_token]').val();
    var baseUrl=document.getElementById("baseUrl").value;
    var url=baseUrl+"/sales/savecart";
    var id=obj;
    $.ajax({
      type: "GET",
      headers: {'X-CSRF-TOKEN': token},
      url:url,
      data: {id:id},
      datatype:'json',
      success: function(data) {

                var returndata =JSON.parse(data);
                console.log(returndata);
}
  });



  }

我正在尝试学习laravel。 这是我的第一个项目。 请帮忙 !!!

我认为如果我返回var_dump($ request-> all()),这就是Network XHR的输出

 array(1) {
  ["id"]=>
  array(2) {
    [0]=>
    array(9) {
      ["customer_id"]=>
      string(1) "0"
      ["seller_id"]=>
      string(0) ""
      ["date"]=>
      string(10) "06/18/2016"
      ["payment_method"]=>
      string(4) "cash"
      ["card_number"]=>
      string(1) "0"
      ["total"]=>
      string(3) "244"
      ["discount"]=>
      string(1) "0"
      ["tax"]=>
      string(2) "15"
      ["grandtotal"]=>
      string(5) "280.6"
    }
    [1]=>
    array(1) {
      [0]=>
      array(4) {
        ["stock_id"]=>
        string(1) "5"
        ["unit"]=>
        string(1) "2"
        ["unit_price"]=>
        string(3) "122"
        ["subtotal"]=>
        string(3) "244"
      }
    }
  }
}

Ahdaf,至Julqas,需要在发送数据之前先查看数据转储,即JSON数据的格式如何。 就是说,我怀疑您的问题是JSON格式问题,即您可能正在向Laravel发送数组,例如,您正在发送var billinfo = ["id", [... data]]; Laravel会假设是原始数据。

您可以通过PHP GET等提取它,效果很好,但是如果您期望Laravel魔术,则需要确保您发送的是Laravel JSON,例如var billing = {id: 1, record: {id:1, name: 'bob'}; 即JSON。 Laravel将对此进行解码,并且$ request-> all()将正常运行。 另外,如果您需要发送JS数据数组,则var billingInfo = {id:1,arrayOfData:[...]}

如果PS Laravel收到AJAX请求,它将返回一个JSON对象,因此console.log(...)将显示JSON,但这并不意味着您要发送格式正确的JSON。

工作格式示例

var billingInfo = {id: 1, email: "person@msn.com", name: "Bob", card: "4448"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM