оператор условия в функции успеха ajax - PullRequest
3 голосов
/ 30 января 2012

Я использую Codeigniter MVC и борюсь с Jquery Ajax.Мои вопросы: как поместить условные операторы в функцию успеха ajax?

По сути, я хочу сделать, чтобы при успешном входе он перенаправлял на другую страницу, если не будет отображаться ошибка: Номер мобильного телефона несоответствует или если пусто Пожалуйста, заполните поле.

Метод контроллера

if($mobile_number == "") {
                    $data = array('message' => "Please fill up the blanks", 'success' => 'no');

            }
            elseif($mobile_number != "123") {
                    $data = array('message' => "Please does not match", 'success' => 'no');

            }else {
                    #redirect('home/test');
                    $data = array('message' => "Mobile match.", 'success' => 'yes');
            }
            $output = json_encode($data);
            echo $output;

my_ajax.js

$(document).ready(function(){


$("#request_submit").click( 

function(){

    var mobtel=$("#mobtel").val();

    $.ajax({
    type: "POST",
    url: "post_action",
    dataType: "json",
    data: "mob_tel="+mobtel, 
    cache:false,
    success: function (data) {

            if(data.success == 'yes') {
                    $("#form_message").html(data.message).fadeIn('slow'); 
            }
            else if(data.success == 'no') {
                    alert('error');
            }
    }

    });
});
});

Заранее спасибо.Надеюсь, что кто-то может помочь мне здесь.(T_T)

Ответы [ 3 ]

3 голосов
/ 30 января 2012

Не уверен, хорошо ли я понял ваш вопрос ... Из того, что я получил, это должно подтолкнуть в правильном направлении.

На вашем месте я бы изменил свой ответ на следующий формат:

$data = array(
 'message'=> /* Your message */,
 'success' => /* True or false */, 
 'case'=> /* 1,2,3 something unique to tell the cases apart */,);

echo json_encode($data);

Итак, в jQuery я могу просто сделать это:

 $.ajax({
   type: "POST",
   url: "post_action",
   dataType: "json",
   data: "mob_tel="+mobtel, 
   cache:false,
   success: function (data) {

        switch(data.case){
        1: /*First case */
        break;
        2: /*Second... */
        break;
        3: /* You know the drill... */
        break;
        default:
        /* If none of the above */

        }
}

});

Поскольку в вашем коде три случая, лучше всего обрабатывать их как три случая.Более надежный код и меньше подверженных ошибкам.

Надеюсь, это поможет!

0 голосов
/ 31 января 2012

Вы можете использовать цикл for для поиска любых ключей в объекте обратного вызова

Если вы хотите узнать, существует ли в обратном вызове ключ ошибки, вы можете использовать:

success: function(cb)
{
    for(errors in cb)
    {
       //checking for error key in the callback
    }
}
0 голосов
/ 30 января 2012

В методе контроллера:

В конце функции используйте exit();

В my_ajax.js

$(document).ready(function(){


$("#request_submit").click( 

function(){

    var mobtel=$("#mobtel").val();

    $.ajax({
    type: "POST",
    url: "post_action",
    dataType: "json",
    data: "mob_tel="+mobtel, 
    cache:false,
    success: function (data) {

            if(data.success == 'yes') {
                    $("#form_message").html(data.message).fadeIn('slow'); 
            }
            else{

                  if(data.message == "Please does not match"){ 
                    //show error message where ever you want
                      $("#form_message").html(data.message).fadeIn('slow'); 
                  }else{
                    //Do whatever you want to do :: to redirect can use window.location
                       alert('data.message')
                   }

            }
    }

    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...