我必须使用其中一个文件,我使用Javascript调用另一个文件:
$(document).ready(function() {
$('#dataBox').load('/example/data.php?id=' + '123');
});
然后数据显示在我的div中,ID为“dataBox”。 到目前为止一切都很好。
尽管在我的data.php文件中,从数据库中查询的每个数据都有一个表单。简单形式只是一个文本字段和一个提交按钮。此表单使用POST发送数据,然后第一个文件使用$_POST
获取这些值。这不起作用,在我将获取数据的代码移动到另一个文件之前一切正常。表单操作参数设置为$_SERVER["REQUEST_URI"]
。我可以通过谷歌Chrome的开发人员检查东西,看看它将值发送到data.php?id ='123',这并不奇怪。所以我认为我会将获取POST值的所有代码移动到data.php文件中。虽然这似乎也不起作用。当我按提交时,页面似乎没有刷新。
编辑:
我刚刚注意到我写了<form ..some code .. /> instead of just <form ..some code .. >
这使得提交按钮“正常”并且它发送了值。虽然它因为$_SERVER["REQUEST_URI"]
作为动作参数而将我发送到jQuery加载页面。我需要这样做才能将它发送到加载文件的页面。
答案 0 :(得分:1)
加载新页面时,需要重新初始化jquery函数。除非你像这样重新启动,否则Jquery不知道它存在:
$(document).ready(function() {
$('#dataBox').load('/example/data.php?id=' + '123', function(){
reinit();
});
});
function reinit() {
$('#dataBox form').submit(function(){
var formData = $(this).serialize();
$.ajax({
type: "POST",
url: 'myProcessingPage.php',
data: formData,
success: function (data) {
alert('success');
},
error: function (data) {
alert('error');
}
});
});
}
注意:此代码只是为了向您展示它是如何工作的,而不是用于生产。
答案 1 :(得分:0)
jQuery(1.7.2)解决方案(这不完整,你必须根据自己的需要进行修改,我只是指出了一种在不使用标准表单提交的情况下发布到data.php的替代方法):
$(document).ready(function() {
// Like you already have, load the form stuff on document ready
$('#dataBox').load('/example/data.php?id=' + '123');
// Now, let's hook a submit event up to your submit buttons - we'll attach it to dataBox so
// you wont have to bind it again:
$("#dataBox").delegate("submit","FORM",function(e){
// Prevent the form from submitting
e.preventDefault();
// Do the submission
$.post("data.php",{id:"123"},function(result){
// Now you can do whatever you want with result, as it
// contains everything that data.php returned.
});
});
});
答案 2 :(得分:0)
Aaaaand ......解决了!
刚刚将$_SERVER["REQUEST_URI"]
更改为$_SERVER["HTTP_REFERER"]
,感谢您的所有帮助!让我明白了什么是错的,更多的是了解事情的运作方式。 :)