2015-12-25 2 views
3

Я пытаюсь отправить данные от клиента к серверу nodeJS. Но данные не отображаются на сервере. Что мне не хватает?
index.htmlNodeJS, я могу видеть данные в Request Payload на стороне клиента, но я не могу видеть данные в объекте запроса на стороне сервера

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
var testField = $('#testField').text(); 
$(document).ready(function() { 
    $('#submit').on("click",function() { 
     if ((!$('#testField').val())) { 
      $('#error').text("Please enter Test"); 
     } else { 
      $('#error').hide(); 
      console.log ("Ajax call");   
      console.log ("Inner Ajax call"); 
       $.ajax({ 
        type: 'POST', 
        url: '/testUrl', 
        data: testField, 
        success: function(result) { 
         console.log ('Response Success:', result); 
        }, 
        failure: function(result) { 
         console.log ('Response Failue:', result); 
        } 
       }); 
     } 
    }); 
}); 
</script> 
</head> 
<div id="testId">Test:<input type="text" name="testField" id="testField">  </div> 
<div id="error"></div> 
<div id="code"></div> 
<div id="button"><input type="button" id="submit" value="Submit"></div>  
</html> 

Когда я ввожу значение в testField и нажмите клавишу ввода, оно должно быть получено на server.js
Ниже приведен код для server.js

var http = require('http'); 
var fs = require('fs'); 
var qs = require('querystring'); 

function send404Response (response) { 
    console.log ("send404Response"); 
    response.writeHead(404, {"Context-Type" : "text\plain"}); 
    response.write("Error 404: Page not found"); 
    response.end(); 
} 

function onRequest(request, response) { 
    console.log ("onRequest"); 
    if (request.method == 'GET' && request.url == '/') { 
     console.log ("onRequest - GET - Home page"); 
     response.writeHead(200, {"Context-Type" : "text\plain"}); 
     fs.createReadStream ('./index.html').pipe(response); 
    } else if ((request.type == 'POST' || request.method == 'POST') && (request.url == '/testUrl')) { 
     console.log ("onRequest - POST - testUrl - " + request.data); //request.data is undefined - how to receive data. 
     response.end(); 
    } else { 
     send404Response(response); 
    } 
} 

http.createServer(onRequest).listen(8888); 
console.log("Server is now running"); 

request.data не определено, как указано в разделе комментариев вышеприведенного кода. Я попытался визуализировать объект запроса с помощью инспектора узла. Но я не вижу данные, отправленные через клиента на сервер. Прошу прокомментировать, что мне не хватает.
Заранее спасибо

+0

Возможный дубликат [Как вы извлекаете данные POST в Node.js?] (http://stackoverflow.com/questions/4295782/how-do-you-extract-post-data-in-node-js) –

ответ

0

Похоже дубликата вопрос см ответ ниже

function (req, res) { if (req.method == 'POST') { var jsonString = ''; req.on('data', function (data) { jsonString += data; }); req.on('end', function() { console.log(JSON.parse(jsonString)); }); } }

stackoverflow.com/questions/4295782/how-do-you-extract-post-data-in-node- js

+0

Это не работает. Я не вижу данных, поступающих на сервер. Это потому, что я не представляю форму.
Как сделать вызов ajax, если я отправлю форму в примере выше? –

+0

Я уверен, что данные не поступают с клиентской стороны на сервер. Итак, делегировать req.on («данные», не работает. Неужели я не правильно передаю данные через AJAX? –

Смежные вопросы