2016-05-26 18 views
0

PHPで快適ですが、チャットアプリケーションをより効率的にするためにnode.jsを学習する必要がありました。私はnode.jsの初心者で、現在次の問題があります。私が何をしたいかnode.js-expressからAjaxへの応答を返す方法

はjqueryのを使用して、アヤックスからのNode.jsと私はPHPでこれを簡単に行うことができましたが、私にエラーを与えてNode.jsのある応答

を取得するための要求を送信することです。ここでは、これまで私のコード...サーバ側

var express = require ('express'); 
var app= express(); 

app.get ('/', function(req,res){ 
    res.send('Hello Express'); 
    console.log("got get"); 
}); 
app.post ('/', function(req,res){ 
    res.send('Hello Express post'); 
    console.log("got post"); 
}); 

var server = app.listen(3000, function(){ 
    console.log('listening on port 3000'); 
}); 

私は両方のポストを持っていると私は両方のためにテストしていたため、取得のHTML

$(document).on("click", "#nodesess", function() { 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost:3000/", 
      success: function(data) { 
       alert('Success!') 
      }, 
      error: function() { 
       alert('error') 
      } 
     }); 
    }); 

部分があります。さらに、「got post」または「got get」を見ることができたcmdでは、テキストをajaxに戻すことができませんでした。 Content-Typeを追加する必要があるのですか、それとも間違っているのですか? PHPでは、私はPHPファイルにPOSTを行っているとそこに私はエコーする必要があります。これまでにエコーされたものは、アヤックスに返送されます....私はres.sendがエコーと同じになると思っていました....助けてください

私は、htmlファイルとnode.jsファイルが同じディレクトリにありません。 Htmlは実際にxamppフォルダにあり、ノードは別のディレクトリにあります...それは可能ですか?

+0

コールバックに渡される変数 "data"から戻ってくる値を見ましたか?成功コールバックの中にconsole.log(data)を入れて、あなたの開発ツールでそれを見てください。 成功またはエラーのアラートメッセージが表示されますか? –

+0

エラーから警告メッセージが表示されます。私は、console.log( "got post")のため、ajaxからnode.jsへのリクエストが成功したと言うのは公正だと思います。実行されました。私はcmdでそれを見ることができます。 - しかし、私はres.send( 'hello express post')に何か間違っていると思います。私はブラウザのエラーから警告を受け取るので、 – user4504661

+0

npmで追加のものをインストールする必要がありますか?依存関係を追加するか? – user4504661

答えて

0

- @ gizzlyPeakSoftwareがコメントされたため、データ型をスクリプトに変更しました。 「成功!」と警告して以来、最初はうまくいっていたようでした。しかし、変更されたアラート(「成功!」)がアラート(データ)になると、定義されていないことが警告されました。

私はもっと多くの調査をしました。Apache(xampp)とnode.jsが異なるポートを使用していたので、クロスドメイン要求を行っていたため問題が発生していました。このため、私のjQuery ajax呼び出しはget/postが黙って失敗していました。次のように私は私のhtmlへのコールバックとデータ型を追加したクロスドメインの問題に対処-to

...

 $.ajax({ 
       type: "get", 
       url: 'http://localhost:3000/', 
       dataType: "jsonp", 
       jsonpCallback: "_callback", 
       success: function(data) { 
        //alert('Success!'); 
        alert(data); 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        alert('error ' + textStatus + " " + errorThrown); 
       } 
      }); 

私はまた、コールバックを反映するために、私のNode.jsのファイルを変更し

var express = require ('express'); 
var app= express(); 

app.get ('/', function(req,res){ 
    //res.send('Hello Express'); 
    res.send('_callback(\'{"message": "Hello worldd!"}\')'); 
    console.log("got get"); 
}); 
app.post ('/', function(req,res){ 
    res.send('_callback(\'{"message": "Hello world!"}\')'); 
    console.log("got post"); 
}); 

var server = app.listen(3000, function(){ 
    console.log('listening on port 3000'); 
}); 
を変更
0

JSON結果を期待していない場合は、dataTypeオプションをscript/textに設定してみてください。また、エラーコールバックの権限を使用していない可能性もあります。このようなものを試してみてください...

error: function(xhr, error){ console.debug(xhr); console.debug(error); } 
関連する問題