[英]How can I access jQuery variable in controller and model (code igniter) in order to send data to database?
[英]how can I send array data from controller to a blade and access the data in javascript variable
我正在使用 Laravel 6。我有一个 controller 在提交表单后收集数据,从收集的数据中,我想使用一些数据将其发送到可以收集付款的不同页面。
这是我的代码
//data collected from form for storing in database and sending to payment gateway
public function store()
{
$user = auth()->user();
$amount = 1200;
$orderid = time() . '-' . $user->id;
auth()->user()->details()->create([
'name' => $data['name'],
'orderID' => $orderid,
'reptype' => $data['reptype'],
'gender' => $data['gender'],
'email' => $data['email'],
'phone' => $data['phone'],
]);
$api = new Api(config('app.razorpay'), config('app.razorsecret'));
$orderData = [
'receipt' => $orderid,
'amount' => $amount, // 2000 rupees in paise
'currency' => 'INR',
'payment_capture' => 1 // auto capture
];
//create a new order id on payment gateway
$razorpayOrder = $api->order->create($orderData);
//collect order ID
$razorpayOrderId = $razorpayOrder['id'];
//data to be sent for payment collection
$pay = [
"amount" => $amount,
"name" => "test name",
"description" => "",
"image" => "https://s29.postimg.org/r6dj1g85z/daft_punk.jpg",
"prefill" => [
"name" => "Daft Punk",
"email" => "customer@merchant.com",
"contact" => "9999999999",
],
"notes" => [
"address" => "Hello World",
"merchant_order_id" => $orderid, //order id which I have generated
],
"order_id" => $razorpayOrderId, //order id provided by gateway
];
return redirect()->route( 'pay')->with($pay); // I would like to send data from this redirect to a blade where I can initiate payment process.
}
我的问题是我想发送$pay
数组数据以路由pay
$pay
数组数据应该可以访问 java 脚本代码。 当我尝试这样做时,我收到一条消息,即变量不可用。
您可以通过两种方式 go 关于此:
// in your blade file
<script>
let pay = JSON.parse('{{ @json($pay) }}');
</script>
这种方法的问题在于它只能在刀片文件中使用,并且取决于您在将其用于其他地方之前实例化pay
。
<!-- hidden input value example -->
<input id="pay-data" type="hidden" value='@json($pay)'>
<!-- attribute example -->
<span id="pay-data" type="hidden" someattribute='@json($pay)' style="display:none;"></span>
<!-- data-* attribute example -->
<span id="pay-data" type="hidden" data-payment='@json($pay)' style="display:none;"></span>
使用单引号 (') 很重要。 不要在@json
帮助程序中使用双引号 (")。
// vanilla js - value example
let pay = JSON.parse(document.getElementById('pay-data').value);
// jquery - value example
let pay = JSON.parse($('#pay-data').val());
// vanilla js - attribute example
let pay = JSON.parse(document.getElementById('pay-data').getAttribute('someattribute'));
// jquery - attribute example
let pay = JSON.parse($('#pay-data').attr('someattribute'));
// vanilla js - data-* attribute example
let pay = JSON.parse(document.getElementById('pay-data').dataset.payment);
// jquery - data-* attribute example
let pay = JSON.parse($('#pay-data').data('payment'));
这样做有一个缺点。 json 数据公开给任何想要检查 html 代码的人。
就个人而言,我更喜欢选项 2 或 3,因为我不喜欢将我的 JS 与刀片文件混合在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.