gpt4 book ai didi

php - jQuery:在 "success"上返回的表单需要重新绑定(bind)

转载 作者:可可西里 更新时间:2023-10-31 22:08:42 25 4
gpt4 key购买 nike

一个简单的问题。我正在使用 jQuery.forms.js 插件。

我有一个发布到 php 页面并使用 jSon 返回数据的表单。

返回的数据是新表单的代码(它替换了用于发布信息的表单)。新表单未绑定(bind)到任何 jQuery 函数,因为它在页面加载时不存在。

那么,如何让 ajax 表单识别新表单,以便在我需要第二次使用该表单时,它也利用了 jQuery 函数?

// jQuery for submitting info to php doc and, on success, replacing the form 
$(document).ready(function() {
jQuery('form[id*=postOnline]').ajaxForm({
dataType: 'json',
success: function(data) {
$('#onlineStatus' + data.rid).html(data.formed).slideDown('slow');
bindNote();
}
});
});

<!-- /////////////////////// POST ONLINE /////////////////////// -->

<div id='onlineStatus<?php echo $b_id ?>' class='postOnline'>
<form name="postOnline" id="postOnline<?php echo $b_id ?>" action="postOnline.php" method="post">
<input type="hidden" value="<?php echo $b_id ?>" name="b" />
<input type="hidden" value="1" name="p" />
<input type="submit" class="button" value="Post Online" />
</form>
</div>

<!-- /////////////////////// POST ONLINE /////////////////////// -->


// ... code for entering data into database and then...
$result = mysql_query( $sql );
if($result) {
if($show == '1'){$val = 'remove from online'; $num='0';}
if($show == '0'){$val = 'show online'; $num='1';}

$return = "
<form name='postOnline' id='postOnline$id' action='postOnline.php' method='post'>
<input type='hidden' value='$b_id' name='b' />
<input type='hidden' value='$num' name='p' />
<input type='submit' class='button' value='$val' />
</form>
";
print json_encode(array("rid" => $id, "formed" => $return));
}
?>

最佳答案

最简单的解决方案是不使用 jQuery 的表单插件并手动完成,这真的不是很难:

$(document).ready(function() { 
jQuery('form[id*=postOnline]').live('submit', function() {
var formdata = $(this).serialize();
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
dataType: 'json',
data: formdata,
success: function(data) {
$('#onlineStatus' + data.rid).html(data.formed).slideDown('slow');
bindNote();
}
});
return false;
});
});

既然您正在使用 jQuery 的新 (1.3) live功能,您添加的任何与 form[id*=postOnline] 选择器匹配的表单仍将与此事件关联。

或者,您可以打开 jquery 表单代码,找到它进行绑定(bind)的任何地方,然后尝试对其进行修改,以便实时使用它。甚至另一种选择是将连接包含在一个函数中,并在成功函数的末尾调用它,如下所示:

function bindForm() {
jQuery('form[id*=postOnline]').ajaxForm({
dataType: 'json',
success: function(data) {
$('#onlineStatus' + data.rid).html(data.formed).slideDown('slow');
bindNote();
bindForm();
}
});
}

$(document).ready(function() {
bindForm();
});

我认为它不是很整洁,但应该可以。

关于php - jQuery:在 "success"上返回的表单需要重新绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com