использование ajax в django проблема с кодом - PullRequest
0 голосов
/ 07 июня 2010

Я новичок в ajax и использую Django для веб-разработки.Теперь Мой шаблон содержит: sample.html

<html>
<body>
<script language="javascript" type="text/javascript">
//Browser Support Code
function ajaxFunction(){
        var ajaxRequest;  // The variable that makes Ajax possible!

        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }



        // Create a function that will receive data sent from the server
        ajaxRequest.onreadystatechange = function(){
                if(ajaxRequest.readyState == 4){
                        document.myForm.time.value = ajaxRequest.responseText;
                }
        }
        ajaxRequest.open("GET", "/showtime/", true);
        ajaxRequest.send(null);
}

</script>



<form name='myForm'>
Name: <input type='text' onBlur="ajaxFunction();" name='username' /> <br />
Time: <input type='text' name='time' />
</form>
</body>
</html>

В views.py моя функция:

def showtime(request):
       string = "Ajax Application"
       data = {"string" : string}
       pprint (data)
       return render_to_response("sample.html",data)

Теперь вывод не соответствует ожидаемому.Шаблон не получает ответ, отправленный сервером Что не так с кодом?

Ответы [ 2 ]

4 голосов
/ 07 июня 2010

Если вы пытаетесь заполнить текстовое поле возвращаемой строкой AJAX, вы не должны использовать render_to_response. Просто верните строку.

def showtime(request):
   s = "Ajax Application"
   print "Returning %s"%s #is this line executed?
   return HttpResponse(s, mimetype="text/plain")
0 голосов
/ 07 июня 2010
  1. попробуйте, если / showtime / работает, как ожидалось, когда вы печатаете в своем браузере!
  2. Использование js-фреймворка, такого как jquery, сэкономит ваше время и энергию, например, при реализации Ajax. см. этот урок http://lethain.com/entry/2007/dec/11/two-faced-django-part-5-jquery-ajax/
  3. есть также некоторые встроенные django-модули, которые вы можете использовать, например, request.is_ajax, чтобы проверить, действительно ли запрос поступил от ajax!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...