JSON XMLHttpRequest POST / PUT到Cherrypy应用程序 - 没有数据

时间:2018-01-22 00:30:33

标签: javascript python json xmlhttprequest cherrypy

我想按照REST原则创建单页面应用程序。我设法使GET和DELETE都工作,但我还需要PUT或POST数据。

失败了一段时间后,我环顾四周,在这里找到了一些示例代码https://gist.github.com/EtienneR/2f3ab345df502bd3d13e 首先,它告诉我设置请求标题可能会有所帮助。然而,完成这一步,并按照确切的例子,我仍然得到我希望接收数据的字段“无”。 我可能会遗漏一些绝对基本的东西,并且环顾四周,我只是找不到它是什么。

在javascript方面我得到了:

update_px (path_spl, success_ppl, fail_ppl, formdata) {
    this.success_p = success_ppl;
    this.fail_p = fail_ppl;

    var data = {};
    data.firstname = "John";
    data.lastname  = "Snow";
    var json = JSON.stringify(data);

    var xhr = new XMLHttpRequest();
    xhr.open("POST", path_spl, true);
    xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
    xhr.onload = function () {
        var users = JSON.parse(xhr.responseText);
        if (xhr.readyState == 4 && xhr.status == "201") {
            console.table(users);
        } else {
            console.error(users);
        }
    }
    xhr.send(json);

}

并且在python方面:

def POST(self, path_spl="NoPathError", id = None, data_opl=None):
  print("POST called with path_spl " + path_spl )
  if(id != None) :
     print(" and id " + id)
  print (data_opl)
  #process data
  return ' '

该方法暴露;输出显示我收到了正确的路径和ID,但即使在我发现的示例代码中交换后,数据也只是无。

我哪里错了?

1 个答案:

答案 0 :(得分:-1)

我找到了让它发挥作用的方法。

1)**在预期的数据上缺失 - 仅此一点没有帮助,现在我得到一个空的dict而不是没有

2)我替换了内容类型;标题现在是

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

,我收到了:

  

{'{“firstname”:“John”,“lastname”:“Snow”}':''}

这实际上引导我进入另一个问题 - {“firstname”:“John”,“lastname”:Snow“}如何在json-enification期间成为一个空值的键?但无论如何。那是另一天找到的我可以和我现在得到的东西一起工作。