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

The problem is that the ajax() function itself overwrites the contents of this_div because that is the target specified (i.e., it replaces the DIV contents with the returned <script> element, which then appends the text to the DIV). If you want to append instead of overwrite, you can do so via Javascript, but in that case you need to specify ":eval" as the target:

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

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

Controller:

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

Note, no need for the <script> tag in that case -- just return the Javascript to be executed. Also, if your append() function doesn't use the "content" input, the second argument to ajax() can just be an empty array (i.e., []) instead of ['content'].

于 2013-02-20T20:07:01.130 回答