PHP:使用Javascript在加载的文件中表单

时间:2012-08-16 17:09:29

标签: php javascript jquery html post

我必须使用其中一个文件,我使用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加载页面。我需要这样做才能将它发送到加载文件的页面。

3 个答案:

答案 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"],感谢您的所有帮助!让我明白了什么是错的,更多的是了解事情的运作方式。 :)