25

我有一个html代码:

<button>asd</button>
<script type = "text/javascript">
$('button').click(
    function() {
        $.getJSON('/schedule/test/', function(json) {
            alert('json: ' + json + ' ...');
        });
    }
);
</script>

和相应的观点:

def test(request):
    if request.method == 'GET':
        json = simplejson.dumps('hello world!')
        return HttpResponse(json, mimetype = 'application/json')

视图被执行(使用 测试print),json变量被初始化但没有出现警告。我做错什么了?我已经看过一些关于此的文档(http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback例如)但我没有找到答案。

编辑:问题是,它HttpResponse没有被导入......不幸的是,Django 没有给出任何错误。其他一切都是正确的。问候
克里斯

4

4 回答 4

47

很可能是 json 格式不正确。有时,当我的代码(应该生成 json)生成错误时,我会发生这种情况。两种选择:

  • 使用 firebug 查看 JSON 响应

  • 使用 jQuery.ajaxSetup 选项在您的 jquery 代码中设置错误处理,例如:

      $.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {   
          alert(textStatus);
          alert(errorThrown);
          alert(XMLHttpRequest.responseText);
      }});
    

使用错误处理进行调试非常棒,因为当您的响应出现问题时,您会立即知道。您可以查看 jQuery.ajax 的jQuery 文档,其中包含 jQuery.ajaxSetup 的所有可用选项。

编辑:第三种选择是只打开应该生成 JSON 的 URL 并通过JSON Lint运行输出以验证它。

于 2009-02-21T13:52:26.833 回答
3

您确定 JSON 有效吗?直接查看响应或使用 Firebug

于 2009-02-21T13:38:42.983 回答
1

我不久前遇到了这个问题,并为 jQuery 的 Ajax 重写了一个包装器,它允许您传递正常的 getJSON 和每个 get 的附加错误回调。

http://www.nurelm.com/themanual/2010/08/09/self-indulgent-code-jquery-getjson-with-error-handling/

于 2010-08-24T19:27:08.117 回答
0

我认为您缺少 url 模式中的尾随 $ 。

于 2011-04-28T18:54:16.467 回答