如何在页面加载时提交表单而不单击提交按钮?

时间:2011-01-19 11:53:23

标签: php

有没有办法让表单提交“onload”而不点击 用PHP提交按钮?我看到了一些方法来使用Javascript,但我喜欢php和id喜欢使用php。

例如:

<form action="https://xxxxxx.com/yyy.php" method="post" id="foo">
<input type="hidden" name="LoginEmail" value="user [at] domain.com">
<input type="hidden" name="LoginPassword" value="mycleartextpassword">
<input type="submit" name="Authenticate" value="Login">
<input type="hidden" name="Action" value="1" >
</form>

我可以使用javascript:

<form id="foo"> .... < /form>

<script type="text/javascript">
    function myfunc () {
        var frm = document.getElementById("foo");
        frm.submit();
    }
    window.onload = myfunc;
</script>

那么,我们可以用PHP做同样的事情吗?能否请您分享您的想法和意见?

谢谢。

5 个答案:

答案 0 :(得分:4)

使用服务器端语言(即:PHP)无法执行客户端(即基于浏览器)表单提交操作。这有点像试图让图书馆读书,如果这是有道理的。 (您从图书馆获取图书并将图书归还,但图书馆本身无法阅读图书。)

因此,如果您需要自动提交,JavaScript是您唯一的解决方案。即使这样,您也需要确保有一个“正常”的解决方案供没有启用JavaScript的人使用。 (优雅退化的喜悦等)

答案 1 :(得分:2)

我在这里也有困难,所以我想我会在这里发布我的解决方案......

此curl命令将文件发布到URL并发回它收到的任何数据。它发布了一个xml文件,这就是为什么内容类型设置为application / x-www-form-urlencoded。我发布的api我要求数据被编码,这就是我使用--data-urlencode的原因。我还在这里为文件名分配了一个变量名称,所以它就像发布一个名称为“what”的输入字段。

curl --data-urlencode [post variable name]=@[filename] --header "Content-Type:application/x-www-form-urlencoded" http://[url to send file to]

将命令分配给变量很容易......见下文 “

content=$(put curl command in here);

请不要忘记任何'='或'&amp;'在您的网址中,如果您尝试检索数据,则会导致问题。

答案 2 :(得分:1)

如果你想在页面加载后自动提交表单(恕我直言,这是毫无意义的)我假设你自己生成了它的值(通过PHP代码),你想将它们发送到另一个页面,对吧?如果通过header()通过POST传递值,则将页面重定向到另一个页面:

$post_data = 'LoginEmail=username [at] domain.com&LoginPassword=...';
$content_length = strlen($post_data);

header('POST /another_page.php HTTP/1.1');
header('Host: fancyhost');
header('Connection: close');
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: ' . $content_length);
header('');
header($post_data);

exit();

答案 3 :(得分:0)

通过使用jquery ajax。

$(document).ready(function(){..........your code goes here........});

如果你更喜欢jquery重播我,我会给你帮助

答案 4 :(得分:0)

使用printf打印您的javascript代码,然后当客户端浏览器收到该页面时,它将执行您的javascript。

printf("<script type="text/javascript">
    function myfunc () {
        var frm = document.getElementById("foo");
        frm.submit();
    }
    window.onload = myfunc;
</script>");

我为地图服务做了很多。