вот мой вьев , я упростил на столько , чтобы при любом ПОСТ запросе с кеем хhr мне передавалась простая информация
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.views.generic.simple import *
from django.utils import simplejson
def ajax_example(request):
if not request.POST:
return render_to_response('testing/ajax_example.html', {})
xhr = request.GET.has_key('xhr')
response_dict = {'test' : test }
if xhr:
return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
return render_to_response('testing/ajax_example.html', response_dict)
я тут немного поменял кое что , не хотел просто заморачиватся с YUI , а целью было просто получить ответ и вывести его алертом
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”
"http://www.w3.org/TR/html4/strict.dtd“>
<html lang=”en“>
<head>
<title>Django AJAX example</title>
</head>
<body>
<h1>Django AJAX example</h1>
<form method=”POST“ action='' id='ajax_example' onsubmit='return AjaxTest();'>
<input type=”text“ id=”id_name“ name=”name“ value=”“>
<input type=”text“ id=”id_total“ name=”total“ value=”“>
<input type=”submit“ id=”send_form“ value=”Send“>
</form>
<script type=”text/javascript“>
var req;
function AjaxTest()
{
req = null;
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e){}
} else if (window.ActiveXObject) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
}
if (req) {
req.onreadystatechange = processReqChange;
req.open(”POST“,”http://localhost/mysite/testing?xhr“,true);
req.send(null);
alert(”send OK“);
}
return false;
}
function processReqChange()
{
if (req.readyState == 4) {
if (req.status == 200) {
alert(req.responseText);
} else {
alert(”no data:\n" +
req.statusText);
}
}
}
</script>
</body>
</html>
так вот в результате в логах апача я вижу
127.0.0.1 - - “POST /mysite/testing/?xhr HTTP/1.1” 200 1405
алерт выводит мне текст моего темплейта , т.е. как будто бы ответ дает
не
return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
return render_to_response('testing/ajax_example.html', response_dict)
как я понял оно собирает пары - имя и значение инпута и создает строку , которая потом вставляется в запрос который обязательно должен идти следом? если не использовать тулкиты , и делать на чистом джава-скрипте каков должен быть порядок действий ? перебираем все инпуты выделяя пары и при помощи setRequestHeader(label, value) вставляем заголовки в запрос и отсылаем ?
спасибо