我正在尝试学习从Ajax向node.js发送/接收数据。我能够从ajax发送数据,但无法接收。无法解决问题。如果有人可以解释我要去哪里错,那太好了。
Ajax
$(document).on('submit', '#searchdata', function (e) {
e.preventDefault();
var formData = $(this).serialize();
$.ajax({
url: location.pathname,
method: 'POST',
type: 'POST',
data: formData,
processData: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
var ret = JSON.stringify(data);
console.log('Success: '+JSON.stringify(data))
},
error: function (xhr, status, error) {
console.log('Error: ' + JSON.stringify(error));
},
});
});
node.js
var myData = '';
request.on('data', function (data) {
myData += data.toString();
});
response.writeHead(200, {
'Content-Type': 'text/json',
'Access-Control-Allow-Origin' : '*'});
response.end(myData);
});
答案 0 :(得分:1)
我在jQuery Ajax文档中看到以下语句:
弃用通知:jqXHR.success(),jqXHR.error()和 从jQuery 3.0开始删除了jqXHR.complete()回调。您可以使用 而是使用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
.done(function() {
alert( "success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "complete" );
});
我相信您将需要更改与文档中上述类似的代码。
答案 1 :(得分:0)
2和3应该返回一个响应,无论哪种情况,我都会使用邮递员进行检查。如果邮递员至少应该返回答复。检查标题和http状态标题。如果您收到200的响应,但没有返回内容,则路由或服务器配置可能有问题
Ajax示例 $(document).on('submit','#searchdata',function(e){ e.preventDefault();
//Get form by id
var $form = #("#form_id");
//Form data
var formData = new formData($form);
$.ajax({
url: 'http://localhost:300/edit/11', //path to api
method: 'POST', //Method to use (GET by default)
data: formData, //The data to be posted
dataType: 'json', //Expected reponse format
}).done(function(res){
//Results here can contain an error - this is common for custom error types
//Test for custom error assuming in the format res.error
if( typeof res.error == 'undefined'){
console.log(res)
}else{
//You have an error
}
}).fail(function(err){
console.log(err)
})