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 を生成するはずのコードがエラーを生成しているときに発生することがあります。2 つのオプション:

  • firebug を使用して JSON 応答を表示する

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

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

デバッグにエラー処理を使用すると、応答に問題が発生したときにすぐにわかるので便利です。jQuery.ajaxSetupで使用可能なすべてのオプションを含むjQuery.ajax の jQuery ドキュメントを確認できます。

編集: 3 番目のオプションは、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 に答える