Php 我试图跳过结帐页面中的付款地址
在结账过程中,我试图隐藏第二步,即付款地址。我的解决方案是首先调用交付地址,然后使用相同的地址保存支付地址的数据,以及使用ajax post方法 但是我在ajaxpost方法中得到了一个错误,该方法用于Php 我试图跳过结帐页面中的付款地址,php,opencart,opencart-3,Php,Opencart,Opencart 3,在结账过程中,我试图隐藏第二步,即付款地址。我的解决方案是首先调用交付地址,然后使用相同的地址保存支付地址的数据,以及使用ajax post方法 但是我在ajaxpost方法中得到了一个错误,该方法用于index.php?route=checkout/payment\u address/save 我尝试在#按钮shipping address单击功能中进行支付地址/保存邮寄呼叫,但它不起作用 // Shipping Address ... $(document).delegate('#butto
index.php?route=checkout/payment\u address/save
我尝试在#按钮shipping address
单击功能中进行支付地址/保存邮寄呼叫,但它不起作用
// Shipping Address
...
$(document).delegate('#button-shipping-address', 'click', function() {
$.ajax({
url: 'index.php?route=checkout/shipping_address/save',
type: 'post',
data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select'),
dataType: 'json',
beforeSend: function() {
$('#button-shipping-address').button('loading');
},
success: function(json) {
$('.alert-dismissible, .text-danger').remove();
$('.form-group').removeClass('has-error');
if (json['redirect']) {
location = json['redirect'];
} else if (json['error']) {
$('#button-shipping-address').button('reset');
if (json['error']['warning']) {
$('#collapse-shipping-address .panel-body').prepend('<div class="alert alert-warning alert-dismissible">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
}
for (i in json['error']) {
var element = $('#input-shipping-' + i.replace('_', '-'));
if ($(element).parent().hasClass('input-group')) {
$(element).parent().after('<div class="text-danger">' + json['error'][i] + '</div>');
} else {
$(element).after('<div class="text-danger">' + json['error'][i] + '</div>');
}
}
// Highlight any found errors
$('.text-danger').parent().parent().addClass('has-error');
} else {
//****** start payment address
$.ajax({
url: 'index.php?route=checkout/payment_address/save',
type: 'post',
data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select,collapse-shipping-address label'),
dataType: 'json',
beforeSend: function() {
//$('#button-payment-address').button('loading');
},
complete: function() {
//$('#button-payment-address').button('reset');
},
success: function(jsons) {
console.log('sent payment add'+JSON.stringify(jsons));
}
});
//******* end of payment call
$.ajax({
url: 'index.php?route=checkout/shipping_method',
dataType: 'html',
在过去的两天里,我一直在研究它,但找不到解决方案。在OC3.0.x上隐藏3步的工作解决方案: 在文件catalog/controller/checkout/shipping_address.php中,
$this->load->language('checkout/checkout')之后的somwhere代码>添加:
if (!empty($this->session->data['shipping_address']['address_id'])) {
$this->session->data['shipping_address']['address_id'] = $this->session->data['payment_address']['address_id'];
}
之后,您需要跳过3步才能继续。
文件中:catalog/view/theme/your_template/template/checkout/shipping_address.twig
添加此脚本:
<script type="text/javascript"><!--
if ($('#shipping-address-clicked').length == 0) {
setTimeout(function(){
$('#button-guest-shipping').click();
$('#button-shipping-address').click();
$('body').append('<div id="shipping-address-clicked" />');
}, 500);
}
$('#button-guest, #button-register, #button-payment-address, #collapse-payment-address').click(function(){
$('#shipping-address-clicked').remove();
});
//--></script>
在OC3.0.x上隐藏3个步骤的工作解决方案:
在文件catalog/controller/checkout/shipping_address.php中,$this->load->language('checkout/checkout')之后的somwhere代码>添加:
if (!empty($this->session->data['shipping_address']['address_id'])) {
$this->session->data['shipping_address']['address_id'] = $this->session->data['payment_address']['address_id'];
}
之后,您需要跳过3步才能继续。
文件中:catalog/view/theme/your_template/template/checkout/shipping_address.twig
添加此脚本:
<script type="text/javascript"><!--
if ($('#shipping-address-clicked').length == 0) {
setTimeout(function(){
$('#button-guest-shipping').click();
$('#button-shipping-address').click();
$('body').append('<div id="shipping-address-clicked" />');
}, 500);
}
$('#button-guest, #button-register, #button-payment-address, #collapse-payment-address').click(function(){
$('#shipping-address-clicked').remove();
});
//--></script>
您确定发送的数据正确吗?您在Ajax.data下传递的信息似乎不正确。您可能需要使用.serialize()
。我建议你先把它移到它自己的变量,你可以测试它,而不是$('loooooong string…)
是的,我的朋友,我正在为调用和它的正确性发送相同的数据,我已经通过调用index.php?route=checkout/shipping\u address/save确认了这一点,在调用shipping\u address/save时没有出现错误,并给了我这个响应“[]”我建议查看OC marketplace。。。例如:在那里你会找到你需要的东西,而且不太贵。你会为将来买便宜的课程。我的意思是你会在那里找到代码,它让你了解它是如何在OC框架中工作的。@K.B.谢谢你的链接,但不管是便宜还是贵,我正在尝试解决这个问题,我知道做得对,但我陷入了这个问题,这个问题可能有一个小的解决方案。当您可以购买模块时,提出stackoverflow问题的目的是什么:DOK。我认为您无法以自己的方式实现这一点,因为发货地址数据尚未填充,在您不执行发货地址步骤之前,我的意思是所有字段都是空的。也许您需要在controller checkout.php中创建一些函数,从DB中调用shipping_地址数据,并在ajax中调用它。隐藏3个步骤的最简单方法。。您的解决方案应该有效。您确定发送的数据正确吗?您在Ajax.data下传递的信息似乎不正确。您可能需要使用.serialize()
。我建议你先把它移到它自己的变量,你可以测试它,而不是$('loooooong string…)
是的,我的朋友,我正在为调用和它的正确性发送相同的数据,我已经通过调用index.php?route=checkout/shipping\u address/save确认了这一点,在调用shipping\u address/save时没有出现错误,并给了我这个响应“[]”我建议查看OC marketplace。。。例如:在那里你会找到你需要的东西,而且不太贵。你会为将来买便宜的课程。我的意思是你会在那里找到代码,它让你了解它是如何在OC框架中工作的。@K.B.谢谢你的链接,但不管是便宜还是贵,我正在尝试解决这个问题,我知道做得对,但我陷入了这个问题,这个问题可能有一个小的解决方案。当您可以购买模块时,提出stackoverflow问题的目的是什么:DOK。我认为您无法以自己的方式实现这一点,因为发货地址数据尚未填充,在您不执行发货地址步骤之前,我的意思是所有字段都是空的。也许您需要在controller checkout.php中创建一些函数,从DB中调用shipping_地址数据,并在ajax中调用它。隐藏3个步骤的最简单方法。。你的解决方案应该有效。
<input type="checkbox" name="shipping_address" value="1" checked="checked" style="display: none" />
{% else %}