Forum Discussion

ChristopherWhe2's avatar
ChristopherWhe2
Qrew Trainee
4 years ago

Uncaught TypeError: JSON.Stringify is not a function

Hello,
I'm trying to utilize the new REST API and am getting an error when I call the below script, which I've put in a code page. Am I missing something simple here?
---
var headers = {
'QB-Realm-Hostname': '{OUR REALM}',
'Authorization': 'QB-USER-TOKEN {MY USER TOKEN}',
'Content-Type': 'application/json'
}
var body = {
"from": "{MY TABLE}",
"select": [
20,
22,
23,
24,
25,
29,
31,
33
],
"where": "{'6'.Ex.'Yes'}AND{'20'.Ex.'New York'}"
}

fetch('https://api.quickbase.com/v1/records/query',
{
method: 'POST',
headers: headers,
data: JSON.Stringify(body)
})
.then(res => {
if (res.ok) {
return res.json().then(res => console.log(res));
}
return Promise.reject({ status: res.status, statusText: res.statusText });
})
.catch(err => console.log(err))
---

------------------------------
Christopher Wheatley
------------------------------

7 Replies

  • Christopher,
    Two problems - it's JSON.stringify (no caps)
    Also you need to add a content-length header (value is the length of the stringified body)
    Neil

    ------------------------------
    Neil Schneider
    ------------------------------
    • ChristopherWhe2's avatar
      ChristopherWhe2
      Qrew Trainee
      Thanks, Neil!  I've updated the code and now I'm getting a 400 error:

      "https://api.quickbase.com/v1/records/query 400 (Bad Request)"

      I've reached out to QuickBase support, hopefully they can help.  The original code came from their API guide so they're now aware of the typo.

      Best,

      Chris

      ------------------------------
      Christopher Wheatley
      ------------------------------
      • NeilSchneider's avatar
        NeilSchneider
        Qrew Cadet
        Chris,
        Did you add the Content-Length header?  You'll get an error 400 if that header isn't present.
        Also I'm assuming you are replacing the curly bracket enclosed items with the actual values, for example:
        'QB-Realm-Hostname': yoursite.quickbase.com
        'Authorization': 'QB-USER-TOKEN xxxxxx_xxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx',  -where xxx... is a token for your app
        "from": "XXXXXXXXX",  - where XXX... is the internal table name
        Neil

        Neil

        ------------------------------
        Neil Schneider
        ------------------------------