前端使用jQuery的Ajax,后端使用Node的express框架;
今天在使用Ajax post到服務(wù)端的時(shí)候,報(bào)了上面的錯(cuò),后來(lái)發(fā)現(xiàn)原來(lái)是Content-Type設(shè)置有問(wèn)題,先看一下,代碼:
$('#btn').click(function(){
$.ajax({
type : 'POST',
url:'http://127.0.0.1:8880/',
data:{
username : $('#name').val()
},
// dataType:'text',
dataType : 'json',
success : function(data){
console.log('success')
$('#resText').append(data.username)
},
error:function(){
console.log('error');
}
})
})
從后端響應(yīng)的數(shù)據(jù)格式是json,因此,后端node的Content-Type要這樣設(shè)置:
app.post('/',function(req,res){
res.writeHead(200,{
// 'Content-Type':'text/plain',
'Content-Type':'application/json',
'Access-Control-Allow-Origin' : '*',// 用來(lái)處理跨域
'Access-Control-Allow-Headers' : 'X-Test-Cors',
'Access-Control-Allow-Methods' : 'POST,PUT,Delete',
'Access-Control-Max-Age' : '1000'
})//這一句就是用來(lái)實(shí)現(xiàn)跨域請(qǐng)求的
//var data= req.body.username
var data = JSON.stringify(req.body) //這里需要對(duì)對(duì)象進(jìn)行序列化
console.log(data)
res.end(data)
})
看一下測(cè)試的結(jié)果:

image.png