大家好,我在Jquery中遇到问题.这是我在PHP文件中的代码的一部分.
echo '<form action="add.PHP" method="post" id="'.$data["pro_id"].'">';
echo '<input style="display:none" type="text" name="img_link" value="'.$data["img_link"].'">';
echo '<input style="display:none" type="text" name="pro_url" value="'.$data["pro_url"].'">';
echo '<input style="display:none" type="text" name="pro_price" value="'.$data["pro_price"].'">';
echo '<input style="display:none" type="text" name="total_fb" value="'.$data["total_fb"].'">';
echo '<input style="display:none" type="text" name="pro_id" value="'.$data["pro_id"].'">';
echo '<input style="display:none" type="text" name="pro_name" value="'.$data["pro_name"].'">';
echo '</form>';
我需要提交表单,但请留在同一页面上,因此我使用了以下代码.它确实可以在不转到其他页面的情况下起作用,但是如何获取此表单的ID?当我输出id但结果将是NoneType.
$('form').live('submit',function() {
$.post($(this).attr('action'),$(this).serialize(),function(response) {
var id = $(this).attr('id');
document.write(id);
},'json');
return false;
});
最佳答案
您使用的是正确的方法,但是您的问题是$.post()调用中的此引用没有引用触发Submit事件的元素.因此,您需要将该行移至外部范围.
这里还有两件事需要解决.首先请注意live()很久以前已不推荐使用.您应该检查所使用的jQuery版本,因为它至少应为1.12.1,或者最好是3.3.1(在撰写本文时),而应使用on().
其次,您不应使用document.write().相反,您可以使用jQuery选择要更新的元素,然后对其调用html().尝试这个:
$(document).on('submit','form',function(e) {
e.preventDefault();
var id = this.id;
$.post(this.action,function(response) {
$('#targetElement').html(id);
},'json');
});