Disclaimer: I don't know if this is at all related, but I had an issue with
an AJAX object I created outside a function. Can you try this and let me
know if it works?

Change this:
var searchReq = getXmlHttpRequestObject();
to this:
searchReq = getXmlHttpRequestObject();

and move it into searchSuggest(), like:
function searchSuggest() {
    searchReq = getXmlHttpRequestObject();
    .
    .
    .
}

I can't explain this, but it tripped me up, because creating the AJAX
object globally, outside a function, didn't seem to work. I read an
explanation that made some sense, although it seemed like a bug, but it has
been too long and I can't remember exactly what the problem was. Keep me
posted.

Furbee

On Mon, Nov 21, 2011 at 1:10 PM, Schmidtchen Schleicher <
[email protected]> wrote:

> I'm trying to do a simple google-suggest like thing with django and ajax.
> I wrote a view for creating the response and try to use it via an
> XMLHttpRequest.
> Here's my view:
>
>
> def category_suggest(request):
>>     if request.method == "GET":
>>         return_categories = ''
>>         received_str = request.GET['str']
>>         found_categories =
>> Category.objects.filter(name__istartswith=received_str) #i stands for
>> incasesensitive
>>         if found_categories:
>>             for cat in found_categories:
>>                 return_categories = return_categories + cat.name + "\n"
>>
>>         print "returned str:"
>>         print return_categories
>>         return HttpResponse(str(return_categories), mimetype='text/plain')
>>     else:
>>         return HttpResponse('')
>>
>
> This view appears to work, because if I open the corresponding url in a
> browser the data is displayed.
> But it doesn't work via ajax: this is the javascript code:
>
> //Gets the browser specific XmlHttpRequest Object
>> function getXmlHttpRequestObject() {
>>     console.debug("GettingXMLHTTP");
>>     if (window.XMLHttpRequest) {
>>         return new XMLHttpRequest();
>>     } else if(window.ActiveXObject) {
>>         return new ActiveXObject("Microsoft.XMLHTTP");
>>     } else {
>>         alert("Your Browser Sucks!\nIt's about time to upgrade don't you
>> think?");
>>     }
>> }
>>
>> //Our XmlHttpRequest object to get the auto suggest
>> var searchReq = getXmlHttpRequestObject();
>>
>> //Called from keyup on the search textbox.
>> //Starts the AJAX request.
>> function searchSuggest() {
>>     if (searchReq.readyState == 4 || searchReq.readyState == 0) {
>>         console.debug("start suggest...");
>>         var str = escape(document.getElementById('txtSearch').value);
>>     searchReq.onreadystatechange = handleSearchSuggest;
>>     var myDate = new Date();
>>     var myTime = myDate.getTime();
>>     searchReq.open("GET", '
>> http://127.0.0.1:8000/kalender/ajax/category_suggest/?str=' + str +
>> "&time=" + myTime, true);
>>         console.debug("sending");
>>         searchReq.send(null);
>>     }
>> }
>>
>> //Called when the AJAX response is returned.
>> function handleSearchSuggest() {
>>     console.debug("Handling suggest");
>>     if (searchReq.readyState == 4) {
>>         console.debug("ReadyState is 4");
>>         var ss = document.getElementById('search_suggest')
>>         ss.innerHTML = '';
>>         var rstr = searchReq.responseText.split("\n");
>>                 console.debug("Response:"+JSON.stringify(searchReq));
>>         for(i=0; i < rstr.length - 1; i++) {
>>             //Build our element string.  This is cleaner using the DOM,
>> but
>>             //IE doesn't support dynamically added attributes.
>>             var suggest = '<div ';
>>             suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
>>             suggest += 'class="suggest_link">' + rstr[i] + '</div>';
>>             ss.innerHTML += suggest;
>>         }
>>     }
>> }
>>
>> //Click function
>> function setSearch(value) {
>>     document.getElementById('txtSearch').value = value;
>>     document.getElementById('search_suggest').innerHTML = '';
>> }
>>
>
> Every function is getting entered and firebug shows there's is a request
> sendet to the django view but the responsetext is an empty string although
> the django-view prints (for debugging purposes) the strings it should send
> to the console.
> I've asked many people who are really fit in javascript and noone could
> find the error :( They told me it must be a django-related issue
>
> So is it because of django and do You find the error?
>
> Thanks
> Schmidtchen
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-users/-/SmXwPWGtKnYJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to