Javascript Django中没有来自Ajax的POST数据
我想将AJAX中的一组数据发布到Django站点。 来自Javascript的代码:Javascript Django中没有来自Ajax的POST数据,javascript,python,ajax,django,Javascript,Python,Ajax,Django,我想将AJAX中的一组数据发布到Django站点。 来自Javascript的代码: var arr = {}; arr["first"] = "first"; arr["second"] = "second"; arr["third"] = "third"; var success = "" var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlh
var arr = {};
arr["first"] = "first";
arr["second"] = "second";
arr["third"] = "third";
var success = ""
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var rawtext = xmlhttp.responseText;
document.getElementById("myDiv").innerHTML= jsonToHTMLTable(rawtext);
}
}
xmlhttp.open("POST","/AJAX?modus=create");
xmlhttp.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
alert(JSON.stringify(arr));
xmlhttp.send({data:JSON.stringify(arr)});
但是当我调试(使用Eclipse)时,我看不到数组或其他有用的字段
这是来自django的代码:
def AJAX(request):
if request.method == 'POST':
method = request.REQUEST.get("modus","")
if method == 'create':
test = request.POST['data']
更多信息
从Django调试进行回溯
Environment:
Request Method: POST
Request URL: http://localhost:8000/AJAX?modus=create
Django Version: 1.6.5
Python Version: 3.4.1
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response
112. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Lee\web\reportingTool\ReportingTool\TempDosage\views.py" in AJAX
14. test = request.POST['data']
File "C:\Python34\lib\site-packages\django\utils\datastructures.py" in __getitem__
301. raise MultiValueDictKeyError(repr(key))
Exception Type: MultiValueDictKeyError at /AJAX
Exception Value: "'data'"
如何访问我的数据?我发现错误的部分(Javascript): 下面是新的JavascriptPart(对我来说很有用): 这是django部分(视图):
你能粘贴你视图的代码吗。通常,它位于:
request.POST
中,但这可能与settings.py中的DEBUG=True
不同?您使用的是哪个版本的Django?变量test
包含什么?你调试了request.POST吗?服务器响应是什么?请提供更多信息,这是您希望得到帮助的愿望。是的,调试是真的,我正在使用1.6.5版本。变量测试包含注释。它应该对数组计数(JSON格式)。调试日志:MultiValueDictKeyError at/AJAX“'data'”您真的需要在Javascript中支持IE5吗?不,我复制并粘贴了这一部分
var arr = {};
arr["first"] = "first";
arr["second"] = "second";
arr["third"] = "third";
var success = ""
$.ajax({
type: "POST",
url: "/AJAX?modus=create",
data: {"data": JSON.stringify(arr)},
success: success,
dataType: "application/json",
headers: {"X-CSRFToken": getCookie('csrftoken')}
});
def AJAX(request):
if request.method == 'POST':
method = request.REQUEST.get("modus","")
if method == 'create':
data = request.POST.get('data');