采坑之Error: Can't set headers after they are sent.

前端使用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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容