簡體   English   中英

如何在Google App Engine上通過jQuery.ajax接收JSON

[英]How to receive JSON via jQuery.ajax on Google App Engine

我正在構建一個Google Forms克隆,該克隆將創建一個表單,然后將其存儲在服務器中。 表單構建器輸出以下JSON.stringify格式:

{"method":"post","action":"/test","html":[{"input_type":"input_text","caption":"What is your name?"},{"input_type":"radio","caption":"What is the name of your dog?","options":{"benny":"Benny","billy":"Billy","bobby":"Bobby"}}]}

我正嘗試將其發送到我的App Engine后端,如下所示:

$.ajax({
    type: "POST",
    url: save_url,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: json_string,
    success: function (e) {
        console.log(e);
    }
});

但是,如何在服務器上“打開”此json字符串,以便將其插入數據庫?

第一個問題:我應該使用self.request.body來獲取數據對象(json字符串),還是有一種更好的方法來獲取它。 現在,我已經解碼了字符串以獲取正確的格式。

def post(self):
    form_elements = json.loads(urllib.unquote_plus(self.request.body))
    self.write(form_elements)

第二個問題:使用json.loads解析json字符串,出現以下錯誤: ValueError: No JSON object could be decoded為什么它不理解它是json?

這是我的工作,從工作代碼中提取並分解為必不可少的部分。

  var blob = JSON.stringify(stuff);
  $.ajax('/api/', {
    'type': 'POST',
    'async': false,
    'data': {
      'json': blob,
     },
     'dataType': 'json',
  }).done(function(data) {
    // ...
  }


def post(self):
    blob = self.request.get('json')
    try:
        stuff = json.loads(blob)
    except:
        # ...

我還沒有嘗試使用整個request.body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM