2017-08-11 14 views
0

我在嘗試向POST請求或PUT請求發送Firebase RESTful API時遇到問題... 要提出請求,我使用的是Valve的Panorama JavaScript,其執行由Google處理V8發動機。錯誤:無效數據;無法傳遞JSON對象,數組或值

GET請求(這沒有問題的作品)是這樣的:

$.AsyncWebRequest("https://<project>.firebaseio.com/-KrFV19WfaC7tfY6qys6.json", 
     { 
      type: "GET", 
      complete: function (data){ 
       $.Msg("WOW: " + JSON.stringify(data)); 
      }, 
      error: function (err){ 
       $.Msg("Error: " + JSON.stringify(err)); 
      }, 
     }); 

我也得到了響應:

WOW: {"statusText":"success","responseText":"{\"a\":\"1\"}\u0000","status":200} 

但是,當我嘗試做一個PUT或POST請求其代碼看起來是這樣的:

$.AsyncWebRequest("https://<project>.firebaseio.com/game.json", 
     { 
      type: "POST", 
      data: {"A":"B"}, 
      success: function (data){ 
       $.Msg("WOW: " + JSON.stringify(data)); 
      }, 
      error: function (err){ 
       $.Msg("Error: " + JSON.stringify(err)); 
      }, 
     }); 

我得到一個響應:

Error: {"statusText":"error", 
     "responseText":"{\n \"error\" : \"Invalid data; couldn't parse JSON object, array, or value.\"\n}\n\u0000", 
     "status":400} 

有人能幫我理解可能是什麼問題嗎?

+0

你有什麼錯誤? console.log(err)? – qiAlex

+0

可能是你可以嘗試只記錄'數據'而不是'JSON.stringify' – Rahul

回答

0

更新

根據this piece of code

你必須包裝你的對象在​​屬性:

data: {payload: JSON.stringify({ "A": "B" })}, 

不得不試圖用JSON.stringify()在你的請求數據對象?

像:

$.AsyncWebRequest("https://<project>.firebaseio.com/game.json", 
    { 
     type: "POST", 
     data: JSON.stringify({"A":"B"}), 
     success: function (data){ 
      $.Msg("WOW: " + JSON.stringify(data)); 
     }, 
     error: function (err){ 
      $.Msg("Error: " + JSON.stringify(err)); 
     }, 
    }); 

此外,有沒有在AsyncWebRequest一個contentType屬性?

因此,也許你不得不

contentType: "application/json; charset=utf-8", 

添加到請求對象(type屬性例如後)。

+0

兩者都試過, contentType不解決 JSON.stringify數據,導致全景錯誤,說:! (s2r://panorama/scripts/custom_game/heroselect.vjs_c,line:9,col:2) - AsyncWebRequest設置的數據值必須是具有已命名的key-> value請求params的對象(如果已設置) –

+0

@dragonblade同樣的錯誤消息兩種情況? – splattne

+0

如果我將數據字符串化,它會導致全景錯誤,它需要是一個具有命名鍵 - >值的對象 –