我将一个变量从一个文件传递到另一个包含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 );
}
});
答案 0 :(得分:2)
发现差异:
getElementById('publishForm')
id="publish"
答案 1 :(得分:1)
从我看到的自动提交链接到'publishForm'
但是,您的表单ID是“发布”
这可能是代码无效的原因。
答案 2 :(得分:0)
修改强>
要解决这个问题:
要实现这一目标,您需要做一些事情。
执行此操作应该从process.php中获取页面并成功执行SourcePage.php上的JavaScript代码。
如果你期望JavaScript会在服务器上运行,那么我担心你错了,因为服务器(php运行时)不会在服务器上执行JavaScript。也许服务器上的重定向将实现您的目标(无论可能是什么)。
<强>原始强>
答案 3 :(得分:0)
也许您应该向我们展示调用者代码而不是处理程序代码。很可能你正在处理的是JS在AJAX调用期间没有运行 - PHP页面处理是服务器端。
您可以考虑使用PHP Curl而不是JS来发送表单吗?这可能会解决它直接加载的问题,但是从另一个页面调用时会失败。
答案 4 :(得分:0)
据我所知,HTML是通过AJAX加载的,对吧?如果是这样,那么因为页面已经加载(AJAX不计算),所以不会触发window.onload。就这样做:
<script type="text/javascript">
document.getElementById('publish').submit();
</script>