2017-04-22 35 views
0

私はノードアプリケーションでポストリクエストを作成しようとしています。しかし、私は次のエラーが発生しています。Nodejsポストリクエストでnet :: ERR_EMPTY_RESPONSEを受け取る

OPTIONS http://localhost:27017/postDebate net::ERR_EMPTY_RESPONSE 

解決方法ここで

は私のルートである:

var express = require('express'); 
var router = express.Router(); 
var Debate = require('../models/debate'); 
var mdb = require('mongodb').MongoClient, 
    ObjectId = require('mongodb').ObjectID, 
    assert = require('assert'); 
var api_version = '1'; 
var url = 'mongodb://localhost:27017/debate'; 

router.post('/'+api_version+'/postDebate', function(req, res, next) { 
    var debate = new Debate(req.body); 
    console.log(debate, "here is the debate"); 
    debate.save(function(err) { 
    if (err) throw err; 
    console.log('Debate saved successfully!'); 
    }); 
    res.json(debate); 
}); 

module.exports = router; 

そして私はonclickの私のEJSファイル内の関数を呼び出した後、このルートを呼び出しておりますので、ここに私のjavascriptのファイルです。

function postDebate() { 
    var topic = document.getElementById('topic').value; 
    var tags = document.getElementById('tags').value; 
    var argument = document.getElementById('argument').value; 

    var debateObject = { 
    "topic": topic, 
    "tags": tags, 
    "argument": argument 
    }; 
    console.log(topic, tags, argument); 

    $.ajax({ 
    type: 'POST', 
    data: JSON.stringify(debateObject), 
    contentType: "application/json", 
     //contentType: "application/x-www-form-urlencoded", 
     dataType:'json', 
     url: 'http://localhost:27017/post',      
     success: function(data) { 
      console.log(JSON.stringify(data), "This is the debateObject");        
     }, 
     error: function(error) { 
      console.log(error); 
     } 
     }); 
} 

このエラーを解決するにはどうすればよいですか?ここでの問題は何ですか? OPTIONSのあなたはappレベルでCORSヘッダを追加する必要があり、(res.endを実行する必要があります

OPTIONS http://localhost:27017/postDebate net::ERR_EMPTY_RESPONSE 
+0

これを解決できましたか?この問題が発生してから2週間が経過しています。私が試したことはすべて動作していません...ありがとうございます! – Valip

答えて

0

は)

を要求次に、あなたのURLをチェックし、あなたのURLが必要がありますので、あなたには、いくつかの名前を使用してモジュールを登録/ROUTER_MODULE_NAME/1/postDebateのように見えますが、あなたのフロントエンドからあなたがここhttp://localhost:27017/post

に呼び出すと、私がチェックし、最小限の例であり、それは私のために正常に動作します:

var express = require('express'); 
var router = express.Router(); 
var app = express(); 

app.use(function(req, res, next) { 
    console.log('request', req.url, req.body, req.method); 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, x-token"); 
    if(req.method === 'OPTIONS') { 
     res.end(); 
    } 
    else { 
     next(); 
    } 
}); 

router.get('/hello', function(req, res, next) { 
    res.end('hello world') 
}); 

app.use('/router', router) 

app.listen(8081) 

//try in browser `$.get('http://127.0.0.1:8081/router/hello')` 
+0

ああ、残念なことに運はない:/どんな考え? –

+0

編集した回答を確認してください。 – h0x91B

関連する問題