2

Web サーバーから JSON データを取得しようとしましたが、うまくいきません。

$.mobile.showPageLoadingMsg();
//$.getJSON('http://localhost:8000/'+site+'/?format=json&callback=?', {}, function(){alert();});

$.ajax({
    url : 'http://localhost:8000/'+site +'/?format=json&callback=?',
    type : 'GET',
    dataType : 'jsonp',
    jsonp : 'callback',
    success : function(){alert('success');},
    error : function(){alert('fail')}
});

$.getJSON$.ajax2 つのメソッドのコールバック関数がまったく起動しませんでした。どうしたの?

私のウェブサーバーのコード:

response_data.append({
            'user_nickname' : post.user_nickname,
            'title' : post.title,
            'recommend' : post.recommend,
            'oppose' : post.oppose,
            'date' : str(post.date),
            'hit' : post.hit,
            'commentcount' : post.commentcount
            })
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')

getインスペクタでは, 200, okと返ってくるのでHttpResponse問題ありません。

応答は次のとおりです。

[{"ヒット": 5, "タイトル": "\uc624\ud1a0\uc774\uc2a4\ucf00\uc774\ud551\ub418\ub294\uac00", "コメント数": 0, "反対": 0, "推奨" : 0、「日付」:「2012-07-24 07:01:22.453000+00:00」、「user_nickname」:「\ud55c\uae00\ub85c\uc5​​bc\ub9c8\ub098\uae38\uac8c\uae4c\uc9c0\ uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"}, {"ヒット": 4, "タイトル": "\uc5ec\uae30 \uae00\uc4f0\uba74?", "コメント数" : 1, "反対": 0, "推奨": 0, "日付": "2012-07-24 06:52:05.125000+00:00", "user_nickname": "\ud55c\uae00\ub85c\uc5​​bc\ ub9c8\ub098\uae38\uac8c\uae4c\uc9c0\uac00\ub2a5\ud558\ub7ef\uc778\u3131\u3147\u3139\u3147\ub05d"}]

$.ajax()成功のコールバック関数を起動することはありません。エラーを呼び出すだけですalert('fail');

4

1 に答える 1

2

応答は JSONP ではありません。単なる JSON 配列です。

への呼び出しでを変更するdatatypeと、コールバックが起動するはずです。ajax'json'

しかし、本当に JSONP を使用する必要がある場合 (クロスサイト通信を行おうとしている場合) は、サーバーの応答として有効な JSONP を返す必要があります。サーバーは、jsonpパラメーターの値を関数名として使用し、JSON 応答を関数の引数として使用して、javascript 関数呼び出しの形式の文字列で応答する必要があります。

于 2012-07-28T09:32:32.687 に答える