表单自动提交ajax不起作用


Form auto submit ajax not working

我通过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 );
   } 
});

发现差异:

getElementById('publishForm')
id="publish"

据我所见,自动提交链接到"publishForm"

但是,您的表单Id是"发布"

这可能是代码无法工作的原因。

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

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

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

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

编辑

对此进行分解:

  • 您在SourcePage.php上的代码(我编这个名字是为了参考)通过AJAX请求将数据发布到process.php
  • process.php然后注入"title"&"wrapper"到html标记中,并将带有一些javascript的html返回到SourcePage.php
  • 然后,您期望在SourcePage.php上显示返回html的结果字符串(msg),从而执行该字符串中的javascript

为了让它发挥作用,你需要做一些事情。

  1. 从html中解析出传入的javascript
  2. 将传入的解析HTML注入SourcePage.php的标记中
  3. 将解析出的JavaScript传递到JavaScript的eval函数中

这样做应该从process.php中获取页面,并在SourcePage.php上成功执行JavaScript代码。

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

原始

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