我使用这个脚本使用ajax加载页面的一部分:
<script type="text/javascript">
$(document).ready(function(){
$('#btn_new').live('click',function(){
var parameter = 1;
$.ajax({
type: "POST",
url: "new_message.php",
data: {
parameter:parameter,
},
success: function(msg)
{
$("#lib_container").ajaxComplete(function(event, request, settings)
{
$("#lib_container").html(msg);
});
}
});
});
});
</script>在lib_container div中,我使用以下脚本输入文本:
<script type="text/javascript">
function searchUsers(str) {
$.ajax({
type: "POST",
url: "users_ajax.php",
data: {
search:str
},
success: function(msg)
{
//console.log(msg);
//$("#users_lst").html(msg.response);
$("#users_lst").ajaxComplete(function(event, request, settings)
{
$("#users_lst").html(msg);
});
}
});
}
</script>当我在输入中加载一些文本时,第二个ajax脚本在div中加载msg变量,然后也重新加载lib_container div。我尝试过许多方法来防止lib_container ajax触发器,但这是徒劳的。只需将输入放入新页面即可正常工作。
有人能帮我解决这个问题吗?
谢谢。
发布于 2014-01-29 20:19:46
您的问题似乎是,每次从ajax调用获得成功响应时,您都要注册一个新的ajaxComplete处理程序。由于您似乎想要更新html,所以我不知道您为什么需要这些ajaxComplete处理程序。
试着这样做:
$(document).ready(function(){
$('#btn_new').live('click',function(){
var parameter = 1;
$.ajax({
type: "POST",
url: "new_message.php",
data: { parameter:parameter },
success: function(msg) {
$("#lib_container").html(msg);
}
});
});
});出于同样的理由:
function searchUsers(str) {
$.ajax({
type: "POST",
url: "users_ajax.php",
data: { search:str },
success: function(msg) {
$("#users_lst").html(msg);
}
});
}另一方面,.live是不受欢迎的,您确实应该使用ajax承诺而不是success回调。有关这方面的更多信息,请参见jQuery api。
https://stackoverflow.com/questions/21441647
复制相似问题