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

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はそれについてエラーを返しませんでした。他はすべて正しかったです。よろしく
クリス

ベストアンサー1

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

  • Firebugを使用して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 リントそれを検証するため。

おすすめ記事