web-dev-qa-db-ja.com

jQuery.getJSONはコールバックをトリガーしません

私は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はエラーを出しませんでした。他のすべては正しかったです。よろしくお願いします。
クリス

25
chriss

Jsonが適切に形成されていない可能性があります。 jsonを生成しているはずのコードがエラーを生成しているときに、これが発生することがあります。 2つのオプション:

  • ファイアバグを使用してJSON応答を表示する

  • 次のようなjQuery.ajaxSetupオプションを使用して、jqueryコードでエラー処理を設定します。

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

応答に問題がある場合はすぐにわかるので、デバッグにエラー処理を使用することは素晴らしいことです。 jQuery.ajaxのjQueryドキュメント をチェックしてください。これには、jQuery.ajaxSetupで使用可能なすべてのオプションがあります。

編集:3番目のオプションは、JSONを生成する必要があるURLを開き、出力を JSON Lint で実行して検証することです。

47
jonstjohn

JSONが有効であると確信していますか?応答を直接確認するか、Firebugを使用してください

3
Andrew Bullock

私はしばらく前にこれに遭遇し、jQueryのAjaxのラッパーを書き直しました。これにより、通常のgetJSONとgetごとの追加のエラーコールバックを渡すことができます。

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

1
Paul

URLパターンの末尾の$が欠落していると思います。

0
Prabhat Gupta