1

コードを開発用マシンから本番環境に初めて移動しましたが、マシンで動作するもの™ がライブ サーバーでは壊れています。何が起こるかというと、ビューに入ろうとしてGameインスタンスを取得すると、 . 奇妙なのは、ajax の URL を取得してブラウザーに貼り付けると、ビューが本来の json を正しく返すことです。したがって、次のように呼び出します。gamedbgame.players[0]current_playergameNone

http://example.com/current_player/47dd98e9c6aa06ab646d39e516ce54d6db70c2bb/

次の正しい出力が得られます。

["Eve", "e4a70a8e99a4efdfd9331d180cd51798b2291a46"]

ajax 呼び出しをセットアップする方法に何か問題があると思われますが、何か問題を見つけることはできません。

これは私のコールスタック全体です:

urls.py

url(r'^start/$', 'briscola.views.play')
url(r'^current_player/([a-z0-9]{40})/$', 'briscola.views.current_player')

game.js

function currentPlayer(game_uid) {

  $.ajax({
    type: 'GET',
    url: '/current_player/' + game_uid + '/',
    success: function(play_data) {

      var player_name = play_data[0];
      console.log('current player ' + player_name);

    }

  });
}

ビュー.py

def start(request):

    p1 = Player('Eve')
    p2 = Player('Adam')

    game = Game([p1, p2])
    gamesdb.set(game.uid, game)

    players = game.players

    output = dict(players=players)

    return render_to_response('index.html', output)

@csrf_exempt
def current_player(request, game_uid):

    game = gamesdb.get(game_uid)

    current_player = game.players[0] 
    play_data = simplejson.dumps([current_player.name, current_player.uid])

    return HttpResponse(play_data, mimetype='application/json')    
4

1 に答える 1

1

$.ajax追加の param:に渡す必要がありますdataType: "json"。または、必要なパラメーターを準備する$.getJSONラッパーを使用します。$.ajax

于 2012-08-25T13:39:49.403 に答える