我正在设计一个Web应用程序,用户可以在其中发布内容到提要。 我通常通过XMLHttpRequest将帖子和帖子数据发送到服务器。
request = new XMLHttpRequest()
var user = 'current user'
var post = 'some text'
request.open("POST", "/sent_new_post?x=" + post + "&user=" + user)
request.setRequestHeader("X-CSRFToken", csrftoken);
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
request. onload = () => { // do stuff when response comes back }
request.send()
然后我在服务器上访问数据
x = request.GET['x']
但是我在使用此方法时遇到了一些问题,尤其是当帖子文本包含“#”时。 我想知道是否可以使用
发送数据request.send(data)
但是我不知道如何在视图函数中访问该数据... 如何在我的视图函数中访问已使用request.send(data)发送到服务器的数据?
答案 0 :(得分:1)
我不确定,因为这个问题对我来说还不是很清楚。
如果您要访问的是请求的有效负载,那么您需要知道
在HttpRequest对象中,GET和POST属性是django.http.QueryDict的实例,django.http.QueryDict是类似字典的类,为处理同一键的多个值而定制。这是必要的,因为某些HTML表单元素尤其是为同一键1传递多个值。
因此,您可以通过编写类似'data'
的内容来访问data= request.POST.get('data','')
负载。
答案 1 :(得分:1)
如果要将url参数中的#
发送到后端,则必须对其进行编码
"/sent_new_post?x=" + encodeURIComponent(post) + "&user=" + encodeURIComponent(user)
如果要在帖子正文中发送数据,则必须使用request.POST
来访问数据,您仍然必须对要发送的数据进行编码。
request.send("x=" + encodeURIComponent(post) + "&user=" + encodeURIComponent(user));