前端使用jQuery的Ajax,后端使用Node的express框架;
今天在使用Ajax post到服务端的时候,报了上面的错,后来发现原来是Content-Type设置有问题,先看一下,代码:
$('#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');
}
})
})
从后端响应的数据格式是json,因此,后端node的Content-Type要这样设置:
app.post('/',function(req,res){
res.writeHead(200,{
// 'Content-Type':'text/plain',
'Content-Type':'application/json',
'Access-Control-Allow-Origin' : '*',// 用来处理跨域
'Access-Control-Allow-Headers' : 'X-Test-Cors',
'Access-Control-Allow-Methods' : 'POST,PUT,Delete',
'Access-Control-Max-Age' : '1000'
})//这一句就是用来实现跨域请求的
//var data= req.body.username
var data = JSON.stringify(req.body) //这里需要对对象进行序列化
console.log(data)
res.end(data)
})
看一下测试的结果:
![](https://img.haomeiwen.com/i13908967/184d403d8c77798c.png)
网友评论