SCRIPT.JS
$(document).ready(function(){
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'data/addtext.php',
dataType: 'HTML',
success: function (result) {
$('#meo').html(result);
}
});
});
});
INDEX.PHP
<div id="meo"></div>
ADDTEXT.PHP
<?php echo "HELLO WORLD" ?>
所以上面是我的代码。我想做的是每次我提交表单时,都会打印出“ HELLO WORLD”一词,此代码在第一次单击时起作用,提交输出将是
HELLO WORLD
现在,我想再次打印出来,所以我将再次单击“提交”按钮,但是在第二次提交时,什么都没有打印出来。为什么?
我想要的输出是
HELLO WORLD HELLO WORLD
换句话说,我想在每次提交时打印出“ HELLO WORLD”,但旧的输出将保留。因此,如果我提交表单3次,则输出应该是
HELLO WORLD HELLO WORLD HELLO WORLD
我知道我可以使用append而不使用表单来执行此操作,但是我想使用表单ajax来执行此操作而无需重新加载页面。同样,此代码有效,但仅在首次单击提交时有效。
为什么第二次点击提交不起作用?
答案 0 :(得分:2)
您没有将结果附加到#meo
,而是每次都完全替换它。
代替
$('#meo').html(result);
尝试将result
附加到#meo
中的现有值/ html。喜欢:
$('#meo').html($('#meo').text() + result);
答案 1 :(得分:2)
. html()
会覆盖您设置的元素内的内容。请尝试使用. append()
。
答案 2 :(得分:-1)
>>> from collections import defaultdict
>>> triples = [['sd', 'pd', 'od'], ['sd', 'pd1', 'od2'], ['sd2', 'pd2', 'od']]
>>> d = defaultdict(list)
>>>
>>> for k,*l in triples:
... d[k].extend(l)
...
>>> res = [[k]+l for k,l in d.items()]
>>> print(res)
[['sd', 'pd', 'od', 'pd1', 'od2'], ['sd2', 'pd2', 'od']]