Javascript Laravel:上载从数组创建的多行

Javascript Laravel:上载从数组创建的多行,javascript,php,ajax,json,laravel,Javascript,Php,Ajax,Json,Laravel,我正在用Laravel构建一个应用程序,它与OpenCPU服务器通信以执行一些计算。OpenCPU服务器以JSON格式返回数据,然后对其进行处理以提取相关信息。此数据返回sku、零售商、日期和销售额。然后使用AJAX将它们发布到控制器。在这个控制器中,我想通过创建一个新的数据数组一次性上传,将这些数据上传到数据库中。每行应包含sku、零售商、日期和销售额。数据库中的日期字段称为日期,但在代码中称为obs OpenCPU返回JSON,JSON是使用 var data = JSON.parse(ou

我正在用Laravel构建一个应用程序,它与OpenCPU服务器通信以执行一些计算。OpenCPU服务器以JSON格式返回数据,然后对其进行处理以提取相关信息。此数据返回sku、零售商、日期和销售额。然后使用AJAX将它们发布到控制器。在这个控制器中,我想通过创建一个新的数据数组一次性上传,将这些数据上传到数据库中。每行应包含sku、零售商、日期和销售额。数据库中的日期字段称为日期,但在代码中称为obs

OpenCPU返回JSON,JSON是使用

var data = JSON.parse(output);
登录到Javascript控制台后,我得到一个长度正确的数组,其中包含销售数字

然后,数据通过AJAX发送到Laravel控制器

$('#save').click(function(){
    var id = $('#filter option:selected').text();
        var json = $.ajax({
            url: 'sales/' + id + '/update',
            type: 'POST',
            data:  {
                    'sku': $('#sku').text(),
                    'retailer': $('#retailer').text(),
                    'obs': data.OBS,
                    'sales': data.Sales,
                    },
            async: false
        }).responseText;
    var message = JSON.parse(json);
    $('.flash').html(message).fadeIn(300).delay(2500).fadeOut(300);
});
在Laravel中,我尝试使用以下方法将数据存储在MySQL数据库中

$sku = Input::get('sku');
$retailer = Input::get('retailer');
$obs = Input::get('obs');
$sales = Input::get('sales');

foreach($obs as $key => $n ){
    $arrayData[] = array(
        'sku' => $sku,
        'retailer' => $retailer,
        'date' => $obs[$key]
        'sales' => $sales[$key]
    );
}
Chart::create($arrayData);
但是,上面的代码似乎不起作用。下面的代码将在数据库中创建正确数量的行,并填充sku和零售商,但销售数字只是循环编号,而不是销售数量

$sku = Input::get('sku');
$retailer = Input::get('retailer');
$dates = Input::get('obs');
$sales= Input::get('sales');

foreach(range(1, count($dates)) as $key){
    DB::table('charts')->insert(
        [
            'sku' => $sku,
            'retailer' => $retailer,
            'date' => DateTime($obs[$key]),
            'sales' => $sales[$key]
        ]
    );
}

鉴于sku和零售商是一个单一输入且重复,我认为这要么是将数组传递给Laravel的问题,要么是我试图访问“obs”和“sales”数组中元素的方式问题。看起来您有正确的步骤,获取输入:

$sku = Input::get('sku');
$retailer = Input::get('retailer');
$dates = Input::get('obs');
$sales= Input::get('sales');
如果您试图强制将它们插入数据库,请立即购买。为什么不使用eloquent插入数据库:(请记住,您需要一个名为Chart.php的图表表模型)

话虽如此,我确实意识到您正在尝试将数组传递给数据库,因此这可能需要一些实验。如果无法确定(试图)传递到数据库的内容,则始终可以使用:

die($variable);

去看看发生了什么事。祝你好运

嗨,蒂姆,我试过了,但似乎不起作用。我通过AJAX调用控制器函数,所以我不确定如何使用die(),是否可以将其记录到文件中?die()是一个类似于JS中console.log的php函数。在php函数中,调用die($something);页面将停止加载并显示该变量的内容。使用模具(变量转储($variable));挖得更深。希望这有点帮助。当我在家的时候,我会看得更多,不过现在是工作日。嗨,蒂姆,谢谢你的迅速回复。我对die()和var_dump()的理解是,正如您所说,它将停止页面加载。由于使用jQuery通过AJAX异步调用控制器方法,我认为die()和var_dump()不起作用。如果我错了,请纠正我。很抱歉这次回复太晚,这是肯定和否定的。die()将停止加载页面,但如果无法查看响应,则不会有太多作用。如果您使用的是Chrome或Firefox,请按CTRL+SHIFT+I打开开发者工具并查看网络。当您执行一个请求时,它应该会在列表中弹出,您可以检查那里的响应以查看变量是什么。希望有帮助!
die($variable);