我想按照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,但即使在我发现的示例代码中交换后,数据也只是无。
我哪里错了?
答案 0 :(得分:-1)
我找到了让它发挥作用的方法。
1)**在预期的数据上缺失 - 仅此一点没有帮助,现在我得到一个空的dict而不是没有
2)我替换了内容类型;标题现在是
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
,我收到了:
{'{“firstname”:“John”,“lastname”:“Snow”}':''}
这实际上引导我进入另一个问题 - {“firstname”:“John”,“lastname”:Snow“}如何在json-enification期间成为一个空值的键?但无论如何。那是另一天找到的我可以和我现在得到的东西一起工作。