这是将表单发送到服务器的ajax方法:
$("#submit").click( function() {
$.ajax({
url: '/login',
type: "POST",
dataType: "html",
contentType: 'application/x-www-form-urlencoded',
data: $('#submit-form').serialize(),
username: $('#username').val(),
password: $('#password').val(),
beforeSend: function(xhr) {},
success: function(data) {
console.log('Success');
},
error: function(jqXHR, textStatus, errorThrown) {
// alert('error ' + textStatus + " " + errorThrown);
console.log(this.data);
console.log('Error', textStatus, errorThrown);
}
});
});
以下是我的index.js:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/login', function (req, res) {
console.log('body=', req.body);
res.end('{"success" : "Success", "status" : 200}');
});
但我只是得到错误'有时服务器得到POST,有时候没有,为什么以及如何解决这个问题?
答案 0 :(得分:0)
$(this).serialize()
应引用您的表单(例如$('#my-form').serialize()
)。
来自https://api.jquery.com/serialize/
它可以作用于选择了单独表单控件的jQuery对象,例如
<input>
,<textarea>
和<select>
如果确实是您的表单并且您仍有问题,那么错误回调中textStatus
和errorThrown
的价值是多少?请求是否到达console.log('Login request')
声明?
以下快递代码对我有用:
...
var app = express()
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/login', function (req, res) {
console.log('body=', req.body)
})
...
使用以下AJAX代码:
$.ajax({
url: '/login',
type: "POST",
dataType: "html",
data: $('#form').serialize(),
contentType: 'application/x-www-form-urlencoded',
username: $('#username').val(),
password: $('#password').val(),
beforeSend: function(xhr) {},
success: function(data) {
console.log('Success');
},
error: function(jqXHR, textStatus, errorThrown) {
// alert('error ' + textStatus + " " + errorThrown);
console.log('Error', textStatus, errorThrown)
}
})
编辑添加了样本快递&amp; ajax代码