Итак, это моя идея, у меня есть диалоговое окно jQuery для входа в систему на моей домашней странице, которое запрещает кому-либо использовать веб-страницу (за диалогом формы входа). Я использую ajax для отправки информации, введенной на php-страницу, которая затем проверяет, существует ли комбинация имени пользователя / пароля в базе данных. Если это произойдет, я вернусь, а затем закрою диалоговое окно (разрешая доступ к сайту).
Как использовать ajax для проверки того, возвращает ли мой PHP-скрипт (с исполняемой страницы) true или false? Я предполагал, что параметры успеха / ошибки функции ajax проверяли это, но приведенный ниже код не работает.
$('.login').dialog({ closeOnEscape: false, title: false, modal: true, width: 'auto', show: {effect: "fade", duration: 1500}, title: 'Login', buttons: { "Login": function() { $.ajax({ async: false, type: 'POST', url: 'sql/login.php', success: function(){ alert( "Success!"); }, error: function(){ alert( "Failed!" ); }, dataType: "html" }); } } }); $(".login").dialog().parents(".ui-dialog").find(".ui-dialog-titlebar").remove();
То, что я сделал, это поставить эхо в конце моего php с помощью переменной, которая помещается в true или false, я сделал эту функцию внутри опции success, это так:
success: function(response){ if(response){ alert( "Success!"); }else{ alert( "Failed!" ); } }
Это сработало для меня, и вы можете поместить это в php
if($myvar){ $anothervar=1; }else{ $anothervar=0; } echo $anothervar;
поэтому вы можете сделать это:
success: function(response){ if(response==1){ alert( "Success!"); }else{ alert( "Failed!" ); } }
это способ, которым я это делаю, и он отлично работает. Надеюсь, это полезно.
Нет. Параметры успеха и ошибки связаны с успехом или сбоем запроса XHR. Вам нужен ваш php-скрипт для вывода чего-либо и проверки этого. Например, если ваш php-скрипт выводит «ok» (т.е. echo("ok");
), если проверка прошла успешно, вы должны использовать запрос ajax, такой как этот
$.ajax({ url: 'sql/login.php', success: function(data) { if(data=="ok") { alert('Login successfull.'); } else { alert('Login failed.'); } } });
В вашем login.php:
if($_POST['data']){ $curData = $_GET['country']; $query = "SELECT * FROM yourTable WHERE tblData = '$curData'"; $result = mysql_query($query) or die; if($result>0) echo "<p class='checkExistance'>Data Exists</p>"; else echo "<p class='checkExistance'>Data doesnt Exist</p>"; }
В вашем javascript:
function isSuccess(){ if($('.checkExistance').text() === "Data Exists"){ success($('.checkExistance').text()); //alert success! }else{ success($('.checkExistance').text()); } }
На самом деле не проверял, работает ли это, но вы в значительной степени получаете эту идею. В вызове AJAX сделайте следующее:
$.ajax({ // .. success:isSuccess }); or success:function(){ if($('.checkExistance').text() === "Data Exists"){ success($('.checkExistance').text()); //alert success! }else{ success($('.checkExistance').text()); } }
Убедитесь, что вы реализуете alert () в функции success (). Надеемся, что это поможет.
Согласно вашей информации, я предположил, что ваша php-страница проведет проверку, и вы сделаете так, чтобы они вернули true или false внутри php-скрипта
В вашем коде есть 2 проблемы
1. Ваша php-страница вернет true или false внутри себя, с другой стороны, они не отправят результат в результат ajax, если вы не отправите их, как указано выше Tomm
2.success () и error () из $ .ajax определяются успешностью запроса NOT BY RESULT, что означает, что даже если ваше php-эхо «false» оно вызовет событие success (), потому что ЗАПРОС УСПЕШНО ОТПРАВЛЯЕТ.