Reputation: 4449
I have a html code:
<button>asd</button>
<script type = "text/javascript">
$('button').click(
function() {
$.getJSON('/schedule/test/', function(json) {
alert('json: ' + json + ' ...');
});
}
);
</script>
and corresponding view:
def test(request):
if request.method == 'GET':
json = simplejson.dumps('hello world!')
return HttpResponse(json, mimetype = 'application/json')
The view is executed (tested using print
), json
variable is initialised but no alert appears. What did I do wrong? I've already seen some docs on this (http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback for example) but I didn't find an answer.
EDIT: The problem was, that HttpResponse
was not imported... Unfortunately Django gave no error about it. Everything else was correct.
regards
chriss
Upvotes: 25
Views: 31165
Reputation: 11
I ran into this a while back and rewrote a wrapper for jQuery's Ajax which allows you to pass the normal getJSON and an additional error callback per get.
http://www.nurelm.com/themanual/2010/08/09/self-indulgent-code-jquery-getjson-with-error-handling/
Upvotes: 1
Reputation: 60316
It is likely that the json is not properly formed. Sometimes this happens to me when my code, that should be producing json is generating an error. Two options:
Use firebug to view the JSON response
Setup error handling in your jquery code using the jQuery.ajaxSetup options such as:
$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}});
Using the error handling for debugging is great, since you will know immediately when there is a problem with your response. You can check out the jQuery documentation for jQuery.ajax which has all of the available options for jQuery.ajaxSetup.
EDIT: A third option would be to just open the URL that should be generating the JSON and run the output through JSON Lint to validate it.
Upvotes: 47
Reputation: 37398
Are you sure the JSON is valid? take a look at the response directly or use Firebug
Upvotes: 3