嘿,我在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;
});
答案 0 :(得分:2)
您使用的是正确的方法,但是问题是this
调用中的$.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, $(this).serialize(), function(response) {
$('#targetElement').html(id);
}, 'json');
});