У меня есть html-страница, которая запускает запрос ajax:

$.ajax({
                type: 'POST',
                url: '/usernamecheck',
                data: {"username":username},
                success: function(taken){
                    if(taken === 0){
                        $('#error').text('The username' + username + ' is available!')
                    }else{
                        $('#error').text('The username' + username + ' is not available')
                    }
                },
                dataType: "json"
            })

Это мой код node.js:

exports.usernameCheck = function(req,res){
var db;
db = require('./../custom_modules/db.js');
var username = req.body.username;
db.users.find({username:username},function(err,users){

    console.log(username)
    if(users.length === 0){
        //return 0
    }else{
        //return1
    }
})

И я хочу ответить на этот ajax запрос node.js, но я немного не уверен, как это сделать?

1
gilbertbw 9 Авг 2012 в 00:39
1
Ну, первое, что вам нужно сделать, это написать веб-сервер и дать ему ответ на почтовый запрос к / usernamecheck. Вы еще что-нибудь написали для узла? Я не думаю, что ваш вопрос достаточно конкретен, чтобы действительно дать хороший ответ.
 – 
travis
9 Авг 2012 в 00:49
У меня есть, обновлю свой вопрос
 – 
gilbertbw
9 Авг 2012 в 00:54
Ваш AJAX просто выполняет обычный HTTP-запрос через Javascript. Если у вас настроен веб-сервер, вы просто отвечаете так, как если бы кто-то ввел URL-адрес в свой браузер (хотя и с помощью json или чего-то еще).
 – 
jli
9 Авг 2012 в 01:02
Не могли бы вы дать мне пример кода для этого? Я использую экспресс и визуализирую html-страницы с использованием res.render(), что эквивалентно отправке JSON?
 – 
gilbertbw
9 Авг 2012 в 01:08
res.send() может принимать объекты и теперь будет их объединять в JSON.stringify.
 – 
rdrey
9 Авг 2012 в 02:36

1 ответ

Лучший ответ

JQuery ajax dataType представляет данные, которые вы ожидаете от сервера. Я бы оставил это как json и просто изменил другие части вашего кода, чтобы они соответствовали типу данных.

Клиент

$.ajax({
  type: 'POST',
  url: '/usernamecheck',
  data: {"username":username},
  success: function(response){
    if( response.taken === true){
      $('#error').text('The username' + username + ' is available!')
    }else{
      $('#error').text('The username' + username + ' is not available')
    }
  },
  dataType: "json"
})

< Сильный > Узел

db.users.find({username:username},function(err,users){
  res.json({taken: users.length !== 0})
})
3
travis 9 Авг 2012 в 03:27
1
Хотя, поскольку он сейчас упоминается, он использует экспресс: res.json(), а не res.write(JSON.stringify()). Кроме того, можно было бы сделать taken: users.length !== 0, чтобы вырезать это разветвление.
 – 
jli
9 Авг 2012 в 01:22