Я пытаюсь написать небольшую службу проверки подлинности с помощью Express и Node.Экспресс POST - Возвращенный JSON обрабатывается JQuery
Я сделал поиск по SO и, похоже, не нашел свой ответ , хотя есть много подобных вопросов, но нет окончательный ответ на самом деле.
Я пробовал много вариантов кода на стороне сервера, но кажется, что я все еще что-то не хватает.
POST-вызов выполнен с HTML-страницы с некоторым кодом JQuery (ajax-вызов).
Я ввожу метод post() в Express, но когда возвращает ответ на HTML-страницу, всегда выполняется обработчик ошибок ajax , но никогда не обработчик успеха.
Мой JSON, который я возвращаю, кажется действительным для меня. Я попытался позвонить send и json на объект ответа , но ничего действительно не работает.
Что мне не хватает?
Любая помощь была бы принята с благодарностью. Спасибо заранее.
var mod = require('express');
var auth = require('./login_module.js'); // my module
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.post('/login', function(request, response) {
console.log("post method called");
var credentials = request.body;
console.log("credentials = " + credentials);
console.log(credentials);
auth.authenticate(credentials.username, credentials.password, function(result){
console.log("Authentication Result: " + result);
var code = result === 1 ? 200 : 401;
console.log("Response Code: " + code);
var res = {
data : "Response Code: " + code
};
console.log(JSON.stringify(res));
// So far I am good!
response.statusCode = code;
response.json(res);
// Response is now sent
// but not recognized as
// valid JSON in the client.
console.log("response sent");
});
});
app.listen(10101);
JQuery call.
<script type="text/javascript">
$(document).ready(function(){
$("#btn").click(function(){
alert('calling now!');
var obj = {
username: $('#usrn').val(),
password: $('#pwd').val()
};
$.ajax({
type: "POST",
url: 'http://localhost:10101/login',
data: obj,
success: function (data, textStatus, jqXHR){
alert('got response back!');
if ("200" === textStatus){
$('#status').text('Login succeeded!');
}else if ("401" === textStatus){
$('#status').text('Login failed!');
}else{
$('#status').text('Invalid status received: ' + textStatus);
}
},
error : function(jqXHR, textStatus, errorThrown){
alert("Error when getting response.");
},
dataType: 'json'
});
})
});
</script>
Заменить 'response.json (Рез),' 'с ответом .send (JSON.stringify (res)); 'и вы золотой – adeneo
Не повезло. Все еще обработчик ошибок, вызываемый в браузере (я тестирую с помощью FF). Я думаю, что я уже это пробовал (попробовал 4-5 различных вариантов, как уже упоминалось). –
И что говорит ошибка – adeneo