On Tue, Jul 2, 2013 at 4:49 PM, Sanjay Bhangar <[email protected]> wrote: > On Tue, Jul 2, 2013 at 3:37 PM, Larry Martell <[email protected]> > wrote: >> >> On Tue, Jul 2, 2013 at 4:24 PM, Sithembewena Lloyd Dube >> <[email protected]> wrote: >> > What data format is your view returning? Django views return HTTP >> > response >> > objects (by default, at least) - although Python lists (and other Python >> > collections?) should work when passed into a view in its context (I have >> > found Django querysets to be an exception). >> > >> > AJAX is Asynchronous Javascript, so I presume that an AJAX call would >> > expect >> > something like JSON output from a callable. I guess with some pain one >> > could >> > get Javascript to ingest Django querysets? I couldn't think of a >> > sensible >> > reason to do so - and I stand to be corrected. >> >> I want to return a string. I've never done this before. I've been >> reading examples on the web and I came up with this: >> >> $.ajax({ >> url: 'permalink/', >> type: 'GET', >> data: { >> report: "{% url motor.core.reports.views.view >> the_controller.app.name the_controller.get_name %}", >> params: "{{ the_report.params_string }}" >> }, >> dataType: 'json', >> success: function (data) { >> setTimeout(function () { >> alert(data); >> }, 0); >> } >> }); >> > > You shouldn't need the setTimeout in your success call - just function(data) > { alert(data); } .. should be okay. > >> In my function I first tried returning just the string, but that was >> causing a 500 error. Then I tried this: >> >> return HttpResponse(content=data, content_type="text/plain", status=201) >> > try status=200 ? > >> >> I don't get the error, but the ajax success function does not seem to be >> called. >> > An invaluable tool here is to use the Developer Tools in the browser to > inspect AJAX requests made and their responses .. in Chrome, open Developer > Tools (f12 is a handy shortcut for this) and go to the Network Tab, and then > you should see the Network Requests show up, and be able to examine what was > returned, etc..
In the browser the response has this: HTTP/1.0 200 OK Date: Tue, 02 Jul 2013 22:53:47 GMT Server: WSGIServer/0.1 Python/2.7.2 Vary: Cookie Content-Type: text/plain No content. But I verified from pdb that the python code is sending something in the content when it does this: return HttpResponse(content=data, content_type="text/plain", status=200) >> > On Wed, Jul 3, 2013 at 12:06 AM, Larry Martell <[email protected]> >> > wrote: >> >> >> >> I'm invoking a view from an ajax call and I want to return data. But >> >> the browser interpertates the return as a 500 (internal sever error) >> >> and my ajax success function does not get called. How can I return a >> >> successful status (like a 201) and also return data? -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. For more options, visit https://groups.google.com/groups/opt_out.

