Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 26, 2007 23:18:47

birst
От:
Зарегистрирован: 2007-09-13
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

ajax + немного YUI

пытаюсь разобратся с ajax на этом примере
вот мой вьев , я упростил на столько , чтобы при любом ПОСТ запросе с кеем х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)
вот код темплейта (офф: как сделать чтобы хтмл код в теге code отобрадался как текст)
я тут немного поменял кое что , не хотел просто заморачиватся с 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)
и еще вопрос , по YAHOO.util.Connect.setForm и YAHOO.util.Connect.asyncRequest

как я понял оно собирает пары - имя и значение инпута и создает строку , которая потом вставляется в запрос который обязательно должен идти следом? если не использовать тулкиты , и делать на чистом джава-скрипте каков должен быть порядок действий ? перебираем все инпуты выделяя пары и при помощи setRequestHeader(label, value) вставляем заголовки в запрос и отсылаем ?

спасибо



Офлайн

#2 Ноя. 27, 2007 00:23:20

diadya_vova
От:
Зарегистрирован: 2007-11-03
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

ajax + немного YUI

>>чтобы хтмл код в теге code отобрадался как текст
есть такой тэг - “PRE”

Спасибо за ссылку, с удовольствием почитал :)
Что-бы лучше узнать как ведет себя код, пользуйся отладчиком.
И попробуй сделать сначала, как у автора стаьи - без АЯКСа.



Отредактировано (Ноя. 27, 2007 00:26:09)

Офлайн

#3 Ноя. 27, 2007 07:50:26

birst
От:
Зарегистрирован: 2007-09-13
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

ajax + немного YUI

там 2 части одного примера вот и вот



Отредактировано (Ноя. 27, 2007 07:50:58)

Офлайн

#4 Ноя. 27, 2007 23:34:00

diadya_vova
От:
Зарегистрирован: 2007-11-03
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

ajax + немного YUI

Спасибо :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version