Javascript 无法在HTTP POST中发送字符串
所以,我是web开发新手,需要向服务器发送POST请求。代码如下: HTML: 如果email.value中有一个数字,甚至是一个bool,那么代码可以正常工作。例如,如果我在电子邮件输入中写入2,服务器会很好地接收它。然而,当我写一封真正的电子邮件或其他字符串时,它会给我一个500内部服务器错误 知道我做错了什么吗 以下是使用Django开发的服务器视图:Javascript 无法在HTTP POST中发送字符串,javascript,html,django,post,Javascript,Html,Django,Post,所以,我是web开发新手,需要向服务器发送POST请求。代码如下: HTML: 如果email.value中有一个数字,甚至是一个bool,那么代码可以正常工作。例如,如果我在电子邮件输入中写入2,服务器会很好地接收它。然而,当我写一封真正的电子邮件或其他字符串时,它会给我一个500内部服务器错误 知道我做错了什么吗 以下是使用Django开发的服务器视图: @csrf_exempt def logtrans(request): #print(request)
@csrf_exempt
def logtrans(request):
#print(request)
context= RequestContext(request,{})
d=json.loads(request.body)
if request.method == 'POST':
print(d)
return HttpResponse("Done")
提前谢谢 我本人从未使用过Django,但我假设您的问题是使用浏览器URL编码数据中的一种编码发送数据,但在服务器JSON上解码不同的编码。当您试图发送的数据不是有效的JSON字符串时,服务器会抛出一个异常,该异常会导致500内部服务器错误 因此,解决方案是在任何地方使用单一编码。例如,要在任何地方都使用JSON,只需更改JavaScript代码中的以下两行:
client.setRequestHeader("Content-Type", "application/json");
client.send(JSON.stringify(data));
除了你的500或可能是,它甚至可以修复它: 您最好使用$.ajax: aa和your views.py
from django.core.serializers import json
@csrf_exempt
def logtrans(request):
data = {}
if request.method == 'POST':
print request.POST.get('data')
data['ok'] = 'ok'
data['response']= 'Done'
return HttpResponse(json.dumps(data), content_type="application/json")
data['ok'] = 'bad'
data['response']= 'not post request'
return HttpResponse(json.dumps(data), content_type="application/json")
顺便说一句,我不会豁免的,小心点 代码使用内容类型,application/x-www-form-urlencoded,因此您的帖子数据应采用名称:值对的形式,并使用encodeURIdata或escacpedata进行urlencoded 这篇文章有一般的答案
还有指向具体细节的链接。非常感谢!简短、简单、正确的答案!正如我所喜欢的:
client.setRequestHeader("Content-Type", "application/json");
client.send(JSON.stringify(data));
function httpPOST(data){
$ajax({
url: "/restaurants/login/"; // always relative path!
type: "post",
data: {data: data}
}).done(function(response){
if(data.ok == 'ok'){
alert(data.response);
}
});
}
from django.core.serializers import json
@csrf_exempt
def logtrans(request):
data = {}
if request.method == 'POST':
print request.POST.get('data')
data['ok'] = 'ok'
data['response']= 'Done'
return HttpResponse(json.dumps(data), content_type="application/json")
data['ok'] = 'bad'
data['response']= 'not post request'
return HttpResponse(json.dumps(data), content_type="application/json")