1

3つのモデルの連鎖オブジェクトを返すビューがあります

def test(request):
    output=itertools.chain(
        model1.objects.all(),
        model2.objects.all(), 
        model3.objects.all()
    )

    return render_to_response('test.html', {'output':output})

htmlに、アンカーとjQueryスクリプトを追加しました。これにより、#outputがmodel1からの新しい値に置き換えられます。

<html>
<head>...</head>
<body>
<script>
    $(document).ready(function() {

        $("#switch").click(function() {
            $.ajax({
                url: $(this).attr("href"),
                success: function(result) {
                    //whatever I put here is not triggered
                }
             });
        });
    });
</script>

    <a id="switch" href="?model=1">switch to model 1</a>

    <div id="output">
        {% for item in output %}
            <div id="{{item}}">
                {{item}}
            </div>
        {% endfor %}
    </div>
</body>
</html>

div#outputを別のテンプレートoutput.htmlに入れて、views.pyを次のように変更しようとしました。

def test(request, template='test.html'):

    if request.GET.get('model'):
        output=model1.objects.all()
    else:
        output=itertools.chain(
           model1.objects.all(),
           model2.objects.all(), 
           model3.objects.all()
        )

    if request.is_ajax(): template='output.html'

    return render_to_response(template, {'output':output})

ただし、リンクをクリックするたびに、ページ全体が更新されます(model1の新しい値で)。

Operaはoutput.htmlだけを返します

これに3日以上苦労していて、ImはAjaxを初めて使用しましたが、これは私にとって非常に混乱しています。

誰かが光を当てることができるといいのですが!

4

2 に答える 2

1

まず、ビューが機能し、URL に直接アクセスしたときに期待される HTML 出力が得られることを確認します (if request.is_ajax()一時的にコメントアウトすることもできます)。

jQuery.html()次に、 ajax 呼び出しでメソッドを使用して #output div の内容を置き換えてみてください。いくつかのアニメーションの例を次に示します。

$.ajax({

    ...
    success: function( returnedData ) {
        $("#output").css("color", "red").fadeOut(500, function() {
            $("#output").html(returnedData);
            $(this).css("color", "green").fadeIn(500);
        });
    }

また、Firebug/Chrome 開発者ツールを使用して ajax 呼び出しを監視してみてください。どちらのツールでも問題をすばやく特定できます。

于 2012-04-30T23:44:20.320 に答える
0

ヘッズアップをしてくれた Daniel Rosman に感謝します。今ではバターのように機能します!

これが最初の質問です: Django ビューで jQuery.ajax() get parameters にアクセスする方法

于 2012-05-01T09:04:16.740 に答える