Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在HTTP POST中发送字符串_Javascript_Html_Django_Post - Fatal编程技术网

Javascript 无法在HTTP POST中发送字符串

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)

所以,我是web开发新手,需要向服务器发送POST请求。代码如下:

HTML:

如果email.value中有一个数字,甚至是一个bool,那么代码可以正常工作。例如,如果我在电子邮件输入中写入2,服务器会很好地接收它。然而,当我写一封真正的电子邮件或其他字符串时,它会给我一个500内部服务器错误

知道我做错了什么吗

以下是使用Django开发的服务器视图:

@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")