Что я хочу сделать:
Просто отправьте некоторые данные (например, json), на http-сервер node.js, используя запросы jQuery ajax.
По какой-то причине я не могу получить данные на сервере, потому что он никогда не запускает событие "данных" запроса.
Клиентский код:
$.ajax({
url: server,
dataType: "jsonp",
data: '{"data": "TEST"}',
jsonpCallback: 'callback',
success: function (data) {
var ret = jQuery.parseJSON(data);
$('#lblResponse').html(ret.msg);
},
error: function (xhr, status, error) {
console.log('Error: ' + error.message);
$('#lblResponse').html('Error connecting to the server.');
}
});
Код сервера:
var http = require('http');
http.createServer(function (req, res) {
console.log('Request received');
res.writeHead(200, { 'Content-Type': 'text/plain' });
req.on('data', function (chunk) {
console.log('GOT DATA!');
});
res.end('callback(\'{\"msg\": \"OK\"}\')');
}).listen(8080, '192.168.0.143');
console.log('Server running at http://192.168.0.143:8080/');
Как я уже сказал, он никогда не попадает в событие "данных" запроса.
Комментарии:
1. Он регистрирует сообщение "Запрос получил",
2. Ответ прекрасен, он способен обрабатывать его на клиенте с данными;
Любая помощь? Я что-то пропустил?
Спасибо всем заблаговременно.
EDIT:
Прокомментировала окончательную версию кода, основываясь на ответе:
Клиентский код:
$.ajax({
type: 'POST' // added,
url: server,
data: '{"data": "TEST"}',
//dataType: 'jsonp' - removed
//jsonpCallback: 'callback' - removed
success: function (data) {
var ret = jQuery.parseJSON(data);
$('#lblResponse').html(ret.msg);
},
error: function (xhr, status, error) {
console.log('Error: ' + error.message);
$('#lblResponse').html('Error connecting to the server.');
}
});
Код сервера:
var http = require('http');
http.createServer(function (req, res) {
console.log('Request received');
res.writeHead(200, {
'Content-Type': 'text/plain',
'Access-Control-Allow-Origin': '*' // implementation of CORS
});
req.on('data', function (chunk) {
console.log('GOT DATA!');
});
res.end('{"msg": "OK"}'); // removed the 'callback' stuff
}).listen(8080, '192.168.0.143');
console.log('Server running at http://192.168.0.143:8080/');
Поскольку я хочу разрешить кросс-доменные запросы, я добавил реализацию CORS.
Спасибо!