【问题标题】:How to validate fields using the functions .each() and ajax()如何使用函数 .each() 和 ajax() 验证字段
【发布时间】:2018-06-17 09:32:24
【问题描述】:

所以。我正在尝试使用 ajax 创建字段验证。我在需要验证的字段上创建了“validate-field”类。

一个字段是 email_addres,另一个是 taxvat。在我的控制器上,我刚刚创建了一个“验证”操作,然后我尝试获取字段 ID 和字段值。

遵循以下代码:

-jQuery:

<script type="text/javascript">
    jQuery(document).ready(function(){

        jQuery(".continuar").on("click", function(){

            url = "<?php echo Mage::getUrl('awmajax/ajax/validar')?>";

            jQuery(".required-entry").each(function(){
                if(jQuery(this).val() == ""){
                    jQuery(this).addClass("validation-failed");
                }
                else {
                    jQuery(this).removeClass("validation-failed");
                }
            });


            jQuery(".validate-field").each(function(){
                fieldName = jQuery(this).attr('id');
                fieldValue = jQuery(this).val();

                jQuery.ajax({
                    type: "GET",
                    url: url,
                    dataType: "json",
                    data: ({
                        field : fieldName,
                        value : fieldValue

                    }),
                    success: function(result){


                        console.log(result);
                    }
                });

            });
        });
    });

</script>

和 php:

public function validarAction(){

        $params = $this->getRequest()->getParams();    

        if($params['field'] == 'taxvat'){
            $taxvat = $params['value'];
            $validacao = Mage::helper('awm_awmajax')->validaCPF($taxvat);
            if($validacao == false){
                $resultTaxvat = array(
                    "response"  => "Taxvat is not valid",
                    "field"     => $params['field']
                );

            }
            $this->getResponse()->setBody(json_encode($resultTaxvat));
        }

        if($params['field'] = 'email_address'){

            $emailAddress = $params['value'];
            $validacaoEmail = Mage::helper('awm_awmajax')->checkEmailExists($emailAddress);

            $resultEmail = array(
                "response"  => $validacaoEmail, //Type a valid Email
                "field"     => $params['field']
            );
            $this->getResponse()->setBody(json_encode($resultEmail));
        }

    }

有什么问题:

我总是只收到第二个“如果”的电子邮件回复。 欢迎任何帮助。

干杯

【问题讨论】:

    标签: php jquery magento


    【解决方案1】:

    您的第二个 IF 语句正在传递一个值而不是比较...我认为您应该写 if ($params['field'] === 'email_address')

    关于您的问题,试试这个:

    public function validarAction()
    {
        $params = $this->getRequest()->getParams();
        $error = false;
        $errors = [];
    
        if ($params['field'] == 'taxvat') {
            $taxvat = $params['value'];
            $validacao = Mage::helper('awm_awmajax')->validaCPF($taxvat);
    
            if (!$validacao) {
                $error = true;
                $errors[] = [
                    'field' => $params['field'],
                    'message' => 'Taxvat is not valid',
                ];
            }
        }
    
        if ($params['field'] === 'email_address') {
            $emailAddress = $params['value'];
            $validacaoEmail = Mage::helper('awm_awmajax')->checkEmailExists($emailAddress);
    
            if (!$$validacaoEmail) {
                $error = true;
                $errors[] = [
                    'field' => $params['field'],
                    'message' => 'Type a valid Email',
                ];
            }
        }
    
        $this->getResponse()->setBody(json_encode([
            'error' => $error,
            'errors' => $errors
        ]));
    }
    

    ...tyr 使用循环构造来重构它。因为如果您要验证很多字段,这可能会导致大量 IF 语句。

    编辑: 将 $result 更改为 $errors 并将 JSON 索引 status 更改为 error。使用 JS 上的更新代码进行迭代会更容易。

    【讨论】:

    • 嘿 Ubuntux。感谢回复并帮助我。是的。我在想那个。目前它的字段并不多,但我们将通过更多信息细节来增加它。我会试试的。干杯 ps:我想我在粘贴时删除了比较信号。
    • 我也做了一些修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2021-06-27
    • 2013-08-02
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多