表单自动提交ajax无法正常工作

时间:2011-06-29 19:40:06

标签: php javascript jquery forms submit

我将一个变量从一个文件传递到另一个包含jQuery ajax表单的php文件。在传递数据的表单页面中,其中包含以下代码,正确传递值,并且字段正在填充正确的条目,我可以使用firebug响应,但页面不是自动提交。他们应该寻找的任何东西都阻止了自动提交表单。如果我直接访问表单页面,我可以看到自动提交工作。

<?php 
$title = $_POST['title'];
$wrapper = $_POST['wrapper'];?>

<form action="test.php" method="post" id="publish">
  <input type="text" value="<?php echo $title ?>" name="title">
  <textarea name="wrapper"><?php echo $wrapper?></textarea>
  <input type="submit" value="Submit">
</form>

<script>
 window.onload = function(){
 document.getElementById('publish').submit();
}
</script>

发送值的ajax代码如下所示

$.ajax({
   type: "POST",
   url: "process.php",
      data: {
     title: 'test',
     wrapper: 'testing123'
     },
   success: function(msg){
     alert( "Data Saved: " + msg );
   } 
});

5 个答案:

答案 0 :(得分:2)

发现差异:

getElementById('publishForm')

id="publish"

答案 1 :(得分:1)

从我看到的自动提交链接到'publishForm'

但是,您的表单ID是“发布”

这可能是代码无效的原因。

答案 2 :(得分:0)

修改

要解决这个问题:

  • 您在SourcePage.php上的代码(我编写此名称以供参考)是通过AJAX请求将数据发布到process.php
  • process.php然后注入“title”&amp;将“wrapper”放入html标记并将一些javascript返回给SourcePage.php
  • 然后你期望在SourcePage.php上显示返回的html的结果字符串(msg)将获得该字符串中的javascript来执行。

要实现这一目标,您需要做一些事情。

  1. 从html中解析传入的javascript。
  2. 将传入的已解析HTML注入SourcePage.php的标记。
  3. 将解析出的JavaScript传递给JavaScript的eval函数。
  4. 执行此操作应该从process.php中获取页面并成功执行SourcePage.php上的JavaScript代码。

    如果你期望JavaScript会在服务器上运行,那么我担心你错了,因为服务器(php运行时)不会在服务器上执行JavaScript。也许服务器上的重定向将实现您的目标(无论可能是什么)。

    <强>原始

    试试这个:http://jsfiddle.net/NiceGuy4263/eJLMS/

答案 3 :(得分:0)

也许您应该向我们展示调用者代码而不是处理程序代码。很可能你正在处理的是JS在AJAX调用期间没有运行 - PHP页面处理是服务器端。

您可以考虑使用PHP Curl而不是JS来发送表单吗?这可能会解决它直接加载的问题,但是从另一个页面调用时会失败。

答案 4 :(得分:0)

据我所知,HTML是通过AJAX加载的,对吧?如果是这样,那么因为页面已经加载(AJAX不计算),所以不会触发window.onload。就这样做:

<script type="text/javascript">
   document.getElementById('publish').submit();
</script>