Web2Py Ajax 添加到 DIV
我正在尝试使用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']
。