显示 ajax 成功的 2 条回复

Show 2 responses for ajax success

我正在尝试显示一条检查邮政编码的消息,returns邮政编码是否可以货到付款entered.However我只能收到一个回复​​condition.Here 我正在发布我的代码 using.Can 你帮助我如何才能以不同的方式显示 COD 和运输的消息。 这是我的 phtml 文件。

<script>
        function checkPostcode() {


            var deliveryMessage = jQuery('#checkDelivery-form #is_deliverable');
            var deliveryMessage1 = jQuery('#checkDelivery-form #cod_delivery');
            deliveryMessage.removeClass('success').removeClass('error').hide();
            deliveryMessage1.removeClass('success').removeClass('error').hide();
            var deliveryForm = jQuery('#checkDelivery-form');
            if(deliveryForm.valid()) {
                jQuery.ajax({
                    type: "POST",
                    url:'<?php echo $this->getUrl('checkDelivery/postcode/check') ?>',
                    data: deliveryForm.serialize(),
                    dataType: "json",
                    showLoader: true,
                    success: function(response) {
                        deliveryMessage.removeClass('mage-error');
                        deliveryMessage.removeClass('mage-success');
                        deliveryMessage.addClass(response.type).html(response.message).show();
                        deliveryMessage.attr('generated','true');
                    }
                    }
                });
            }
            return false;
        }
</script>

这是我的 php 文件检查有效的邮政编码并相应地显示响应。

public function execute()
    {
        ob_start();
        $response = [];
        try {
            if (!$this->getRequest()->isAjax()) {
                throw new \Exception('Invalid request.');
            }
            if (!$postcode = $this->getRequest()->getParam('zipcode')) {
                throw new \Exception('Please enter pincode');
            }

            $region = $this->zipcodeRegion->getCollection()->addFieldToSelect('*')->addFieldToFilter('zip_code',$postcode)->getFirstItem();

            if($region['zip_code'] == $postcode)
            {
                if($region['is_blocked'] == 1)
                {
                    if($region['is_cod_available'] == 0)
                    {
                        $response['type'] = 'mage-error';
                        $response['message'] = 'No delivery available at selected pincode';
                    }

                }
                else
                {
                    $response['type'] = 'mage-success';
                    $response['message'] = 'Delivery available at selected pincode';
                }
            }
            else
            {
                $response['type'] = 'mage-error';
                $response['message'] = 'Please enter valid pincode';
            }
        } catch (\Exception $e) {
            $response['type'] = 'mage-error';
            $response['message'] = $e->getMessage();

        }
        $this->getResponse()->setContent(json_encode($response));
    }

}

如果根本没有送货服务,则您无需在 if($region['is_blocked'] == 1){... 中检查货到付款。检查 else 中的 COD 并在那里显示适当的消息。

试试这个:

public function execute()
    {
        ob_start();
        $response = [];
        try {
            if (!$this->getRequest()->isAjax()) {
                throw new \Exception('Invalid request.');
            }
            if (!$postcode = $this->getRequest()->getParam('zipcode')) {
                throw new \Exception('Please enter pincode');
            }

            $region = $this->zipcodeRegion->getCollection()->addFieldToSelect('*')->addFieldToFilter('zip_code',$postcode)->getFirstItem();

            if($region['zip_code'] == $postcode)
            {
                if($region['is_blocked'] == 1)
                {

                        $response['type'] = 'mage-error';
                        $response['message'] = 'No delivery available at selected pincode';

                }
                else
                {

                    if($region['is_cod_available'] == 0)
                    {
                        $response['type'] = 'mage-success';
                        $response['message'] = 'Delivery available at selected pincode';
                    }else{
                        $response['type'] = 'mage-success';
                        $response['message'] = 'Delivery available at selected pincode but no COD';
                    }

                }
            }
            else
            {
                $response['type'] = 'mage-error';
                $response['message'] = 'Please enter valid pincode';
            }
        } catch (\Exception $e) {
            $response['type'] = 'mage-error';
            $response['message'] = $e->getMessage();

        }
        $this->getResponse()->setContent(json_encode($response));
    }

}