我必须在不提交的情况下从数据库(使用外部php文件)更新表单的某些元素。
例如:编写员工id,甚至在提交之前都会填充姓名。我对ajax还很陌生,所以不太了解如何执行ajax。
我的代码如下:
xyz.js的一部分
$("#makeproj-nav").click(function()
{
// project form starts
s = "<form id = 'create_new_form' name = 'new_form' method='post' action='insert_new.php'><div class='project_form'><span>";
s += "<div class='Form_contents'> Employee ID: <input type='text' size='100' name='emp_id'></div>";
s += "<div class='Form_contents'> Employee Name: <input type='text' size='100' name='emp_name'></div>";
s += "<div class='Form_contents'> <input type='submit'> </div>";
s += "<span></div></form>";
$("#card-wrapper").html(s);
$('#create_new_form').on('click', function(e) {
$.ajax({
url : 'Find_EmpName.php',
type : 'POST',
data : $(this).serialize(),
success : function(response) {
$("emp_name").value(response.reply);
}
});
});
});
Find_EmpName.php最好采用员工id,然后返回员工名称并在所需字段中更新。如果你纠正上面的代码,那就太好了。感谢
首先
你.submit()
是一张表格,而不是.click()
。
您单击表单中的提交按钮以提交表单,但您自己没有单击表单
因此,首先将click
更改为submit
,除非您希望每次有人点击您的表单时都执行ajax调用
然后,使用.preventDefault()
禁用提交事件的正常提交行为,并在有人单击submit
按钮或提交表单后执行ajax调用。
$('#create_new_form').on('submit', function(event){
event.preventDefault();
//your ajax call
});
接下来
当你这样做时:
$("emp_name").value(response.reply);
具体来说:
$("emp_name")
您要求jQuery选择<emp_name>
的所有元素
有这样的事情吗?我不这么认为。
所以,你想做的是通过名称来定位输入,对吧?
所以你这样做:
$("input[name=emp_name]")
接下来
jQuery中没有.value()
,而是.val()
。不要混合使用javascript和jQuery。
正确的版本是:
$("#create_new_form input[name=emp_name]").val(response.reply);
你可以在这里找到更多关于如何使用选择器的信息:
http://api.jquery.com/category/selectors/
祝你好运。