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
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.