javascript - Django - Ajax without JQuery lib -


i learning , using ajax without jquery lib. created simple view renders random number on template. added button , called ajax function. however, clicking button doesn't change value on screen. checked in dom (firebug) , shows sometext.responsetext yielding whole html rather value, has new value in html. sharing provide more information on have found far. new , experimented lot ex; have checked "request.is_ajax():" somehow view not find ajax in request. have printed request on command line , querydict empty.

obviously not doing in correct manner django. please assist.

i have view;

def home(request):     rand_num = random.randint(1,100)     return render(request, 'home.html', {'rand_num':rand_num}) 

and html , script;

<html> <head> <script type='text/javascript'>     var sometext;     function helloworld(){         sometext = new xmlhttprequest();         sometext.onreadystatechange = callback;          sometext.open("get", "{% url 'home' %}", true);         sometext.send();     };      // when information comes server.     function callback(){         if(sometext.readystate==4 && sometext.status==200){             document.getelementbyid('result').innerhtml = sometext.responsetext;         }     }; </script>  </head> <body> <div id="result">{{rand_num}}</div> <input type='button' value='abraca dabra!' onclick="helloworld()"/>  </body> </html> 

here url view;

url(r'^$', 'socialauth.views.home', name='home'),  

i learning online tutorial.

that because ajax endpoint whole view - i.e. ajax request asks whole rendered template.

what want number, make new view , url return number, , make ajax request that.

ajax isn't special, way make asynchronous request url , contents returned.

for reference, view using jsonresponse:

from django.http import jsonresponse  def get_random_number_json(request):     random_no = random.randint(1,100)     return jsonresponse({'random_no': random_no}) 

then in frontend javascript, fetch url view, give json in javascript variable via ajax call, , instead of document.getelementbyid('result') processing, can grab variable json object.


Comments