(PWA) Send a Subscription information to my Server

88 views
Skip to first unread message

mostwanted

unread,
Jan 3, 2022, 2:31:30 AM1/3/22
to web2py-users
Hi guys, I am still in the path of converting my app into a PWA. 
After subscribing the user to receive push messages I have to take save this information to the server into my database & this is where I am failing, I tried the code below to send the information to a function that will save into a database but the function is not receiving anything because i keep getting TypeError: expected string or buffer when i try to read the information.  Is there an easier way to grab information from JavaScript function as JSON data & send it to the server?

function sendSubscriptionToBackEnd(subscription) { 
 method: 'POST', 
url: "{{=URL(''save_data")}},
 headers: { 'Content-Type': 'application/json' }, 
 body: JSON.stringify(subscription) }) 
  .then(function(response) {
if (!response.ok) {
throw new Error('Bad status code from server.'); } return response.json(); }) .then(function(responseData) { if (!(responseData.data && responseData.data.success)) { throw new Error('Bad response from server.'); } }); }

Regards

Murat KAŞIKÇIOĞLU

unread,
Jan 3, 2022, 6:30:08 AM1/3/22
to web...@googlegroups.com
Hi,

Can you try to change the "body:" with "data:" on the code?

By the way, it is better to check the JSON object format with https://jsonlint.com/ or similar.

Best,
Murat.


mostwanted <godir...@gmail.com>, 3 Oca 2022 Pzt, 10:31 tarihinde şunu yazdı:
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/d287bf6d-df95-47b7-ba3b-4062bc12b772n%40googlegroups.com.

mostwanted

unread,
Jan 4, 2022, 4:44:36 AM1/4/22
to web2py-users
I tried adding this to my code
 $.ajax({
          type: "POST",
          url: "https://www.sesoa.co.bw/init/default/func.html",
          data: JSON.stringify(subscribeOptions)
       }).done(function( msg ) {
          console.log(msg);
      });

when i assign {{=URL('save_data')}} to url: I get a 400 BAD REQUEST error
When i assign "/init/default/func.html" to url: I get a 500 INTERNAL SERVER error

I dont know what to do anymore

Dave S

unread,
Jan 6, 2022, 3:08:43 AM1/6/22
to web2py-users
On Tuesday, January 4, 2022 at 1:44:36 AM UTC-8 mostwanted wrote:
I tried adding this to my code
 $.ajax({
          type: "POST",
          url: "https://www.sesoa.co.bw/init/default/func.html",
          data: JSON.stringify(subscribeOptions)
       }).done(function( msg ) {
          console.log(msg);
      });

when i assign {{=URL('save_data')}} to url: I get a 400 BAD REQUEST error
When i assign "/init/default/func.html" to url: I get a 500 INTERNAL SERVER error

I dont know what to do anymore

Is your [target] controller function called "save_data"  or "func"?

 For the 500 error, is a ticket generated?  If not, do you have logging enabled?  500s are often the result of an exception.

For the 400, what is the actual URL sent to the server?  Your front end should have logged that.

/dps



mostwanted

unread,
Jan 6, 2022, 6:58:34 AM1/6/22
to web2py-users
The [target] controller is " save_data ", "func" was is just a mistake I made

Murat KAŞIKÇIOĞLU

unread,
Jan 6, 2022, 8:46:29 AM1/6/22
to web...@googlegroups.com
Hi,
When you call the function from web page, it should be return something.
After that, you can call that from Javascript.
 I've created a sample function as below:

@auth.requires_login()
def getSettings():
    setId = request.vars.setId
    record = []
    try:
        record = db(db.settings.id == setId).select().first()
msg = "Found"
    except:
        msg = "Error or not found"

    # result in json format
    rbc = {"result": 0,  
           "params": record["params"],
           "message": msg}
    return json.dumps(rbc)


When you call the function from web, it returns a json object:

// http://192.168.0.142:8000/myapp/settings/getSettings?setId=5

{
  "result": 0,
  "params": [
    {
      "opno": "11",
      "group": "Something",
      "quantity": "4",
      "id": 1617021161251,

    },
    {
      "opno": "13",
      "group": "Depo",
      "quantity": "1",
      "id": 1617021161253
    },
    "message": "Found"
}


Best regards,
Murat.


mostwanted <godir...@gmail.com>, 6 Oca 2022 Per, 14:58 tarihinde şunu yazdı:
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages