我有一个令我心烦意乱的问题:如何将存储在PHP变量中的表单ID发送到我的AJAX脚本,以便在提交时更新正确的表单?
我的表单是一个模板,可以在设置$_REQUEST['id']
时从MySQL表中加载数据。因此,我的表单可能包含不同行的不同数据。
所以,if (isset($_REQUEST["eid"]) && $_REQUEST["eid"] > 0) { ... fill the form ... }
表单ID存储在PHP变量中,如$form_id = $_REQUEST["eid"];
如果用户更改了任何内容,我想使用下面的按钮更新表单:
<button type="submit" id="update" class="form-save-button" onclick="update_form();">UPDATE</button>
以下AJAX将数据发送到update.php:
function update_form() {
var dataString = form.serialize() + '&page=update';
$.ajax({
url: 'obt_sp_submit.php', // form action url
type: 'POST', // form submit method get/post
dataType: 'html', // request type html/json/xml
data: dataString, // serialize form data
cache: 'false',
beforeSend: function() {
alert.fadeOut();
update.html('Updating...'); // change submit button text
},
success: function(response) {
var response_brought = response.indexOf("completed");
if(response_brought != -1)
{
$('#obt_sp').unbind('submit');
alert.html(response).fadeIn(); // fade in response data
$('#obt_sp')[0].reset.click(); // reset form
update.html('UPDATE'); // reset submit button text
}
else
{
$('#obt_sp').unbind('submit');
alert.html(response).fadeIn();
update.html('UPDATE'); // reset submit button text
}
},
error: function(e) {
console.log(e)
}
});
}
我想将表单的id添加到dataString,如下所示:
var dataString = form.serialize() + '&id=form_id' + '&page=update';
但我不知道怎么做。有人可以帮忙吗?
答案 0 :(得分:0)
您必须使用PHP动态编写字符串:
var dataString = form.serialize() + "&id='<?php echo $REQUEST['eid'] ?>'+&page=update";
在服务器上,您可以在文档上编写Php代码,它们将在客户端显示为HTML / JS。
答案 1 :(得分:0)
听起来像type=hidden
表单字段的作业:
<input type="hidden" name="eid" value="whatever">
答案 2 :(得分:0)
如上所述,最实用的方法是利用表单中input type="hidden"
的使用。
这样的一个例子是:
<form action="#" method="post" id=""myform">
<input type="hidden" name="eid" value="1">
<input type="submit" value="Edit">
</form>
让你用jQuery运行类似的东西:
$('#myform').on('submit', function(){
update_form();
return false;
});
前提是您在AJAX请求中正确发送所需内容(从您需要的地方获取输入等等等等等等)
您也可以将其包含在数据字符串中;我不太明白为什么你会这样做......但每个人都是他们自己的。
var dataString = form.serialize() + "&eid=SOME_EID_HERE&page=update";