我通过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
为了让它发挥作用,你需要做一些事情。
- 从html中解析出传入的javascript
- 将传入的解析HTML注入SourcePage.php的标记中
- 将解析出的JavaScript传递到JavaScript的eval函数中
这样做应该从process.php中获取页面,并在SourcePage.php上成功执行JavaScript代码。
如果您期望JavaScript在服务器上运行,那么恐怕您错了,因为服务器(php运行时)不会在服务器上执行JavaScript。也许服务器上的重定向将实现您的目标(无论是什么)。
原始
试试这个:http://jsfiddle.net/NiceGuy4263/eJLMS/