2011-08-16 4 views
3

これはかなりシンプルなはずですが、意図したとおりに動作させることができません。成功またはエラーを返すための単純なnode.jsサーバー

は、私はちょうどサーバーは、DBを検索し、提出されたメールアドレスを照会した後、成功またはエラーを返すクライアントがメールアドレスでフォームを送信したい、とのNode.js。最初のステップとして、私がしようとしているのは、成功またはエラーを手動で戻すことだけです。

クライアント側では、JQueryとajaxFormプラグインを使用しています。
サーバー側では、node.js側でconnect-formを使用しています。

node.js側からconsole.logメッセージが表示されますが、クライアント側では「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....'); 
+0

私は全く同じ問題があります。あなたは何か答えを見つけましたか? – Luc

答えて

1

これはnodejsで返されて何の問題である可能性があります。 ajax関数をconsole.logに変更して、ajax呼び出しからの応答を返し、返されているものを確認してください。クロムのネットワークモニタのようなものでレスポンスヘッダとボディをチェックするか