Codeigniter

#javascript #jquery #ajax #codeigniter

#javascript #jquery #ajax #codeigniter

Вопрос:

Я немного смущен этим кодом. Я читаю этот код ajax, который автоматически вставляет данные. но что меня смущает, так это эта строка, if(result=='12') then trigger ajax что означает 12, почему это должно быть 12, а затем обусловлено до ajax. По-видимому, я все еще изучаю ajax, спасибо. P.S это работает хорошо, кстати, я просто запутался в коде

вот полный код функции создания javascript / ajax

         $('#btnSave').click(function(){
        var url = $('#myForm').attr('action');
        var data = $('#myForm').serialize();
        //validate form
        var empoyeeName = $('input[name=txtEmployeeName]');
        var address = $('textarea[name=txtAddress]');
        var result = '';
        if(empoyeeName.val()==''){
            empoyeeName.parent().parent().addClass('has-error');
        }else{
            empoyeeName.parent().parent().removeClass('has-error');
            result  ='1'; //ALSO THIS NUMBER 1 WHY SHOULD IT BE 1?
        }
        if(address.val()==''){
            address.parent().parent().addClass('has-error');
        }else{
            address.parent().parent().removeClass('has-error');
            result  ='2'; //ALSO THIS NUMBER 2 WHY SHOULD IT BE 2?
        }

        if(result=='12'){   //HERE IS WHAT IM CONFUSED
            $.ajax({
                type: 'ajax',
                method: 'post',
                url: url,
                data: data,
                async: false,
                dataType: 'json',
                success: function(response){
                    if(response.success){
                        $('#myModal').modal('hide');
                        $('#myForm')[0].reset();
                        if(response.type=='add'){
                            var type = 'added'
                        }else if(response.type=='update'){
                            var type ="updated"
                        }
                        $('.alert-success').html('Employee ' type ' successfully').fadeIn().delay(4000).fadeOut('slow');
                        showAllEmployee();
                    }else{
                        alert('Error');
                    }   
                },
                error: function(){
                    alert('Could not add data');
                }
            });
        }
    });
  

Комментарии:

1. Это часть пользовательской проверки для этой формы. Это магические числа вызова, и их следует избегать.

2. Код, который вы читаете, создает строку "12" только тогда, когда оба входных параметра, employeeName и address , не являются пустыми. Итак, когда результат будет равен "12" , будет безопасно выполнить вызов ajax. Действительно, странный способ проверки безопасности.

3. @Shidersz итак, что ты думаешь? следует ли этого избегать?

4. @abn почему этого следует избегать?

5. @Shidersz, я не совсем понимаю, поэтому можно использовать любое случайное число? так может ли это быть 20 вместо 12?

Ответ №1:

Как я уже объяснял в своих комментариях, и поскольку вы хотели привести пример. Вот как я буду действовать, чтобы избежать проверки на result == '12' :

 $('#btnSave').click(function()
{
    var url = $('#myForm').attr('action');
    var data = $('#myForm').serialize();

    // Validate form
    var empoyeeName = $('input[name=txtEmployeeName]');
    var address = $('textarea[name=txtAddress]');
    var formValid = true;

    if (empoyeeName.val() == '')
    {
        empoyeeName.parent().parent().addClass('has-error');
        formValid = false;
    }
    else
    {
        empoyeeName.parent().parent().removeClass('has-error');
    }

    if (address.val() == '')
    {
        address.parent().parent().addClass('has-error');
        formValid = false;
    }
    else
    {
        address.parent().parent().removeClass('has-error');
    }

    // If form is not valid, return here.

    if (!formValid)
        return;

    // Otherwise, do the ajax call...

    $.ajax({
        type: 'ajax',
        method: 'post',
        url: url,
        data: data,
        async: false,
        dataType: 'json',
        success: function(response)
        {
            if (response.success)
            {
                $('#myModal').modal('hide');
                $('#myForm')[0].reset();
                var type = '';

                if (response.type=='add')
                    type = 'added';
                else if (response.type=='update')
                    type ="updated";

                $('.alert-success').html('Employee '   type   'successfully')
                    .fadeIn().delay(4000).fadeOut('slow');
                showAllEmployee();
            }
            else
            {
                alert('Error');
            }   
        },
        error: function()
        {
            alert('Could not add data');
        }
    });
});
  

Ответ №2:

Это просто проверка наличия значений и добавление к ним строки.

 if(empoyeeName.val()=='')
  

Это проверяет пустое имя и добавляет ошибку, если имя пустое. иначе это приведет 1 к результату.

 if(address.val()=='')
  

Это проверяет пустой адрес и добавляет ошибку, если адрес пуст. иначе это приведет 2 к результату.

Итак, если оба они непустые, это означает, что результат будет 12 и только вы вызываете ajax, иначе отображается ошибка.

Комментарии:

1.так это может быть случайное число? как 10 19 и т.д.?

2. @SummerWinter да, основываясь на предпочтениях, вы можете определить его по своему желанию.

3. как насчет этого? result ='1'; какова цель приращения add 1?

4. @SummerWinter это не увеличение, это просто добавление строки 1 , а не числа 1

5. здравствуйте, сэр, есть ли какой-либо способ или альтернативный способ удаления строки result ='1'; или я имею в виду проверку формы без перехода туда?