1

AJAXを使用して、IDが「this_div」のコンテンツをdivに追加しようとしています。

HTML:

<a href='#' onclick="ajax('append?what=first',
['content'],'this_div')">click</a>

<div id='this_div'></div>

コントローラ:

def append():
    if request.vars.what == "first":
        something = "ABC"
    else:
        something = "DEF"

return "<script>jQuery('#this_div').append('"+something+"')</script>"

これにより、「何か」のコンテンツがdivにロードされますが、前のコンテンツは保持されません。なぜそれがそのように振る舞うのか、誰かが光を当てることができますか?Python / Web2Py/AJAXの組み合わせは初めてです。

ありがとう!

4

1 に答える 1

3

問題は、指定されたターゲットであるため、ajax()関数自体がの内容を上書きするthis_divことです(つまり、DIVの内容を返された<script>要素に置き換えて、テキストをDIVに追加します)。上書きする代わりに追加したい場合は、Javascriptを介して追加できますが、その場合は、ターゲットとして「:eval」を指定する必要があります。

<a href='#' onclick="ajax('append?what=first', [], ':eval')">click</a>

<div id='this_div'></div>

コントローラ:

def append():
    if request.vars.what == "first":
        something = "ABC"
    else:
        something = "DEF"
    return "jQuery('#this_div').append('%s');" % something

<script>その場合、タグは必要ありません。実行するJavascriptを返すだけです。また、append()関数が「content」入力を使用しない場合、toの2番目の引数は、の代わりにajax()空の配列(つまり、[])にすることができ['content']ます。

于 2013-02-20T20:07:01.130 に答える