2016-03-08 21 views
0

因此,進出口使用的XMLHttpRequest從鉻擴展一些數據發佈到我的高致病性禽流感API:在高致病性禽流感訪問FORMDATA

var xhr =new XMLHttpRequest(); 
    xhr.open('POST', 'http://my-url.com/signup', true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    let params = {} ; 
    params.username = "username"; 
    params.password = "password"; 
    xhr.send(JSON.stringify(params)); 
    xhr.onreadystatechange = function(response){...} 

似乎只是正常工作(從分析中鉻合金調試器的網絡選項卡)

現在,在服務器端,從快過來,我本來以爲這個數據將在req.params可用,但一些研究使我相信這應該工作:

module.exports = [{ 
    method:'POST', 
    path: '/signup', 
    config:{ 
     payload:{ 
      output:'data', 
      parse:true, 
     }, 
    handler:function(request, reply){ 
     console.log(`signing up user: ${request.payload.username}`); 
     ..... 
    } 
    } 
} 

此然而打印

簽約用戶:未定義

和切換它來打印一個字符串化request.payload輸出:

簽約用戶:{ 「{\」 用戶名\「: \ 「APA \」,\ 「密碼\」:\ 「APA \」} 「:」 「}

有內置的高致病性禽流感功能解析這個呢,還是需要」 滾我自己的」 ?

回答

1

FormData會將您的有效載荷格式化爲multipart/form-data有效載荷。但是你正在設置一個內容類型標頭application/x-www-form-urlencoded。它們是完全不同的編碼。所以你會混淆hapi的有效負載解析器,瞭解它接收的有效負載的編碼。

刪除行:

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

它應該工作即可。

+1

haa!我認爲這很奇怪,hapi不會包含一個合適的解析器!不能分析我的瘋狂,儘管它可以; P感謝馬特! –

相關問題