Простой сервер node.js для возврата успеха или ошибки - PullRequest
3 голосов
/ 16 августа 2011

Это должно быть довольно просто, но я не могу заставить его работать так, как я планировал.

Я просто хочу, чтобы клиент отправил форму с адресом электронной почты, а сервер node.js выглядитup db и вернуть успех или ошибку после запроса отправленного адреса электронной почты.В качестве первого шага все, что я пытаюсь сделать, это вручную возвратить успех или ошибку.

На стороне клиента я использую плагин JQuery и ajaxForm.
На стороне сервера я использую форму подключения насторона node.js

Я вижу сообщение console.log со стороны node.js, но не вижу предупреждения "SUCCESS" на стороне клиента.Вместо этого я вижу пустую страницу на localhost: 8000.Я думаю, что исправить будет что-то простое.

Любая помощь будет принята с благодарностью !!!!

HTML / JS на стороне клиента:

<div class="gform">
    <form id="entryForm" action="http://localhost:8000/" method="post">
        <p><input type="radio" name="choice" value="1"> Choice 1</p>
        <p><input type="radio" name="choice" value="2"> Choice 2</p>
        <p><input type="radio" name="choice" value="3"> Choice 3</p>
        <p><input type="radio" name="choice" value="4"> Choice 4</p>
        <p><input type="radio" name="choice" value="5"> Choice 5</p>
        <p><input type="text" name="email"> Email Address</p>
        <p><input type="submit" value="Submit" /></p>
    </form>
</div>
<div id="form_result">
</div>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        var options = {
            dataType: 'json',
            target: "form_result",
            success: goodResult,
            error: badResult,
            timeout: 1000 
        };

        $('#entryForm').ajaxForm(options);
    }

    function goodResult() {
        alert('SUCCESS!');
    }

    function badResult() {
        alert('ERROR!');
    }
</script>

Сторона Node.js:

var form = require('connect-form'), connect = require('connect');
var server = connect.createServer(
  form({ keepExtensions: true }),
  function(req, res){
    // Form was submitted
    if (req.form) {
      req.form.complete(function(err, fields){
        console.log(fields);
        res.writeHead(200, { "Content-Type": "application/json" });
        res.end();
      });
    } else {
      // Regular request, return error.
    }
  }
);
server.listen(8000);
console.log('Express app started on port 8000....');

1 Ответ

1 голос
/ 13 февраля 2012

Это может быть проблемой с тем, что возвращается nodejs.Попробуйте изменить функцию ajax на console.log, ответ на вызов ajax и посмотрите, что возвращается.Это или проверьте заголовки ответа и тело в чем-то вроде сетевого монитора Chrome

...