Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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
如何将数组数据从控制器发送到刀片服务器并访问javascript变量中的数据_Javascript_Php_Arrays_Ajax_Laravel - Fatal编程技术网

如何将数组数据从控制器发送到刀片服务器并访问javascript变量中的数据

如何将数组数据从控制器发送到刀片服务器并访问javascript变量中的数据,javascript,php,arrays,ajax,laravel,Javascript,Php,Arrays,Ajax,Laravel,我和拉威尔6号一起工作。我有一个控制器,在表单提交后收集数据,从收集的数据中我想使用一些数据将其发送到另一个页面,在那里可以收集付款 这是我的密码 //从表单收集的数据,用于存储在数据库中并发送到支付网关 公共函数存储() { $user=auth()->user(); $amount=1200; $orderid=time().'-'.$user->id; auth()->user()->details()->create([ 'name'=>$data['name'], 'orderID'=

我和拉威尔6号一起工作。我有一个控制器,在表单提交后收集数据,从收集的数据中我想使用一些数据将其发送到另一个页面,在那里可以收集付款

这是我的密码

//从表单收集的数据,用于存储在数据库中并发送到支付网关
公共函数存储()
{
$user=auth()->user();
$amount=1200;
$orderid=time().'-'.$user->id;
auth()->user()->details()->create([
'name'=>$data['name'],
'orderID'=>$orderID,
“reptype”=>$data['reptype'],
“性别”=>$data[“性别”],
'email'=>$data['email'],
'phone'=>$data['phone'],
]);
$api=新api(config('app.razorpay')、config('app.razorsecret');
$orderData=[
“收据”=>$orderid,
“金额”=>$amount,//2000卢比(佩斯)
“货币”=>“印度卢比”,
“付款捕获”=>1//自动捕获
];
//在支付网关上创建新订单id
$razorpayOrder=$api->order->create($orderData);
//收款订单ID
$razorpayOrderId=$razorpayOrder['id'];
//要发送用于收款的数据
$pay=[
“金额”=>美元金额,
“名称”=>“测试名称”,
“说明”=>“”,
“图像”=>”https://s29.postimg.org/r6dj1g85z/daft_punk.jpg",
“预填充”=>[
“名字”=>“愚蠢的朋克”,
“电子邮件”=>”customer@merchant.com",
“联系人”=>“99999999”,
],
“注意事项”=>[
“地址”=>“你好,世界”,
“商户订单id”=>$orderid,//我已生成的订单id
],
“订单id”=>$razorpayOrderId,//网关提供的订单id
];
return redirect()->route('pay')->with($pay);//我想将此重定向中的数据发送到刀片服务器,在那里我可以启动支付流程。
}

我的问题是,我想将
$pay
数组数据发送到路由
pay
,java脚本代码应该可以访问
$pay
数组数据。当我尝试执行此操作时,会收到一条消息,说明变量不可用。

有两种方法可以解决此问题:

1.呼应变量。
//在刀片文件中
让pay=JSON.parse('{{@JSON($pay)}}');
这种方法的问题在于,它只能在刀片文件中使用,并且取决于在其他地方使用之前实例化
pay

2使用属性、data-*属性或隐藏输入存储数据,然后检索数据。

使用单引号(')很重要。不要在
@json
帮助程序中使用双引号(“)

//vanilla js-value示例
让pay=JSON.parse(document.getElementById('pay-data').value);
//jquery-值示例
让pay=JSON.parse($('#pay data').val());
//vanilla js-属性示例
让pay=JSON.parse(document.getElementById('pay-data').getAttribute('someattribute'));
//jquery-属性示例
让pay=JSON.parse($('#pay data').attr('someattribute');
//vanilla js-data-*属性示例
让pay=JSON.parse(document.getElementById('pay-data').dataset.payment);
//jquery-data-*属性示例
让pay=JSON.parse($('#pay data').data('payment'));
这样做有一个缺点,json数据会暴露给任何想要检查html代码的人

3通过ajax调用获取数据。
就个人而言,我更喜欢选项2或3,因为我不喜欢将我的JS与刀片文件混合使用。

有两种方法可以实现这一点:

1.回显变量。
//在刀片文件中
让pay=JSON.parse('{{@JSON($pay)}}');
这种方法的问题在于,它只能在刀片文件中使用,并且取决于在其他地方使用之前实例化
pay

2使用属性、data-*属性或隐藏输入存储数据,然后检索数据。

使用单引号(')很重要。不要在
@json
帮助程序中使用双引号(“)

//vanilla js-value示例
让pay=JSON.parse(document.getElementById('pay-data').value);
//jquery-值示例
让pay=JSON.parse($('#pay data').val());
//vanilla js-属性示例
让pay=JSON.parse(document.getElementById('pay-data').getAttribute('someattribute'));
//jquery-属性示例
让pay=JSON.parse($('#pay data').attr('someattribute');
//vanilla js-data-*属性示例
让pay=JSON.parse(document.getElementById('pay-data').dataset.payment);
//jquery-data-*属性示例
让pay=JSON.parse($('#pay data').data('payment'));
这样做有一个缺点。json数据向任何想要检查html代码的人公开

3通过ajax调用获取数据。
就个人而言,我更喜欢选项2或3,因为我不喜欢将JS与刀片文件混合使用。

您可以通过以下方式在javascript中访问:
var variable=$pay
;我试过了,它说变量unfinedtry:
return redirect()->route('pay',['pay'=>$pay['order_id'])
javascript接受数组的唯一成功方法是执行
var pay={!!$pay!!}
。您可能还需要将其包装在json_解码中。所以这将是
{!!json_decode($pay)!!}
我不在我的开发终端测试,但我认为这是accurate@maximus1127这是向刀片服务器发送数据的正确方式吗?返回重定向()->路由('pay')->使用($pay);您可以通过以下方式在javascript中访问:
var variable=$pay
;我试过了,它说变量unfinedtry:
return redirect()->route('pay',['pay'=>$pay['order_id'])我唯一的成功是javasc接受了数组