2016-02-15 2 views
0

Мне нужно, чтобы вы помогли мне на базовом вызове ajax, который я использую для кнопки входа. Существует форма для выполнения, а затем нажмите кнопку «Войти», это обычно вызовет php-файл, который будет проверять и обрабатывать действие входа.Ошибка при вызове Ajax -> два файла отправляются вместо одного

Проблема в том, что когда я пытаюсь войти в систему, у меня есть два файла, отправленные вместо одного. Я имею в виду, что я ожидаю, что это действие вызовет файл login.php и отправит ответ с объектом, но есть первый запрос, который появляется на красной консоли разработчика и еще один файл, который я не хотел вызывать, который отображается как раз под первый звонок.

Here's what i see on my chrome developper console

Проблема, безусловно, в моем коде, я должен быть написан какой-то плохой код либо в моем файле JS или PHP, так вот они: - JS Ajax вызова по нажатию этой функции

logIn(pseudo, mdp, callback) { 
    var var_request = {}; 
    var_request['pseudo'] = pseudo; 
    var_request['mdp'] = mdp; 

    $.ajax({ 
     url: '/webservices/logIn.php', 
     method: 'POST', 
     data: var_request, 
     timeout: kTimeout, 
     success: function() { 
      // callback(); 
      alert('good'); 
     }, 
     error: function() { 
      alert('function error'); 
     } 
    }); 
}, 

и файл PHP запрошенный

include("connexion_bdd.php"); 

$pseudo = $_POST["pseudo"]; 
$mdp = $_POST["password"]; 

$req = $bdd->prepare('SELECT * FROM joueurs WHERE nickname = ?'); 
$req->execute(array($pseudo)); 

$reponse = $req->fetch(); 

if (!$reponse) { 
    $return = array('error'=>'Pseudo non existant'); 
} else if ($reponse['mdp'] != $mdp) { 
    $return = array('error'=>'Mauvais mot de passe'); 
} else { 
    $return = array('error'=>'aucune erreur'); 
} 

print(json_encode($return)); 

Спасибо вам, ребята, для чтения и помочь мне! я предполагаю, что я сделал что-то плохое, но я не могу видеть, я не очень опытный, так что не удивляйтесь, если он кажется легким для вас, чтобы решить, что ^^

увидимся :)

+2

Вы запустили 'event.preventDefault()', чтобы остановить отправку формы как номинальную, когда вы используете этот код javascript на своем месте. – RiggsFolly

+0

Можем ли мы увидеть, как вы вызываете 'logIn()' возможно, проблему с отправкой формы. –

+0

Я собираюсь попробовать этот код @RiggsFolly, thx – AurelCA

ответ

2

Попробуйте это (переход $("#your-form") в форму ID):

$("#your-form").submit(function(event) { 
    event.preventDefault(); //prevent form submission and do your code instead... 
    if ($('#pseudoC').val() == "") { 
     alert('remplir le pseudo'); 
    } else if ($('#mdpC').val() == "") { 
     alert('remplir le mdp'); 
    } else { 
     //Parameters 
     var pseudo = $('#pseudoC').val(); 
     var mdp = $('#mdpC').val(); 

     //Faire le check bdd si le pseudo existe et s'il est bien associé à ce mdp 
     Webservices.logIn(pseudo, mdp, function(reponse) { 
      alert(reponse); 
     }); 
    } 
}); 
0

Извините за поздний ответ,

Спасибо вам всем за ответы, он работает сейчас, у меня есть только проблема одна лил: данные, возвращаемые мой вызов ajax не является JSON, хотя я возвращаю JSON в php с

print (json_encode ($ reponse));

Нужно ли мне что-либо делать, чтобы рассматривать ответ как JSON?

Смежные вопросы