Web2Py Ajax 添加到 DIV

1 投票
1 回答
1923 浏览
提问于 2025-04-17 16:32

我正在尝试使用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>"

这个代码可以把“something”的内容加载到div里,但它没有保留之前的内容。有没有人能告诉我为什么会这样呢?我对Python/Web2Py/AJAX的组合还很陌生……

谢谢!

1 个回答

3

问题在于,ajax()这个函数会直接把this_div的内容覆盖掉,因为它指定了这个目标,也就是说,它会用返回的<script>元素替换掉这个DIV的内容,然后再把文本添加到这个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"这个输入参数,那么ajax()的第二个参数可以直接用一个空数组(也就是[]),而不是['content']

撰写回答