2015-07-24 3 views
0

Я хочу, чтобы моя программа ниже возвращала false, если идентификатор сотрудника существует. Мой PHP-файл повторяет true, если идентификатор сотрудника существует, и он возвращается в функцию AJAX.jQuery AJAX не возвращается false

$.post("connect_ajax_php.php", 
    {type: "checkId", val: val, field: "emp_id", table: "employee"}) 
    .done(function(data, succ){ 
     data = $.trim(data); 
     if(succ =="success" && data=="true"){ 
      $(errContId).html(val+" already exist"); 
      $(id).css({"border":"1px solid red"}); 
      $('#'+sucImg).html("<img src='images/background/error.png'>"); 
      return false; 
     }else{ 
      $(errContId).html(""); 
      $(id).css({"border":"1px solid #ccc"}); 
      $('#'+sucImg).html("<img src='images/background/success.png'>"); 
     } 
    }); 
+1

Вы не можете вернуть значение из асинхронного вызова таким образом. Просмотрите http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call. – Jasen

+0

Я думаю, что ваш код выглядит нормально, какая ошибка вы получаете? – jasonscript

+0

Нет, вы ничего не можете вернуть в AJAX .. обратитесь к @Jasen link – choz

ответ

0

Если вы используете AJAX вызова в качестве этапа проверки вы будете вручную представить форму в Ajax обратного вызова. Затем переместите return false в обработчик клика, а не вызовите его из обработчика ответа ajax.

<form id="myform" action="/url" method="post"> 
    ... 
    <button id="submitbtn" type="submit">Submit</button> 
</form> 

$("#submitbtn").on("click", function(event) { 
    $.ajax({ 
     url: "connect_ajax_php.php", 
     method: "post", 
     data: {type: "checkId", val: val, field: "emp_id", table: "employee"} 
    }) 
    .done(function(result) { 
     if (result == "true") { 
      // id exists 
     } 
     else { 
      $("#myform").submit(); 
     } 
    }); 

    return false; // prevent standard form submission 
}); 
Смежные вопросы