-1

我有一个表格,我想使用 post 将输入到表格中的详细信息发送到 uri 中。我只是不知道该怎么做。

我会有:

号码: 致电:

我想生成http://domian.co.nz/page.php?login=xxxx&password=xxxx&number=12345&call678910

我将预设登录名和密码,但是如何将表单中的数据传递到操作中?

这是我提出的一个概念想法,但仍然不是 100%:

  • 下拉菜单不会将数据发布到 uri
  • 我将如何发布通话数据?

代码在这里,因为它不喜欢堆栈系统

4

6 回答 6

1

您的 URI 仅适用于 GET 请求。

发布请求不会将参数放在 URI 中,而是放在请求的正文中。

服务器希望您的 POST 请求的正文采用http://www.w3.org/TR/html401/interact/forms.html#form-data-set中定义的 multipart/form-data 格式

最简单的方法是使用表单,让 HTML 多部分发送元素。

通常你会让用户填写登录名和密码这两个字段以便登录:

<FORM METHOD=POST ACTION="yoururl.php">
    <input type=text name=login>
    <input type=password name=password>
    <input type=submit value="login">
</FORM>

用户只需单击“登录”按钮即可在帖子中发送请求。

但是,如果您不希望这些字段出现在您的页面中,您可以使用隐藏输入:

<FORM METHOD=POST ACTION="yoururl.php">
    <input type=hidden name=login>
    <input type=hidden name=password>
</FORM>

假设您使用的是 javascript,您可以这样做:

var form = document.forms[0];
form.login = "mylogin";
form.password = "mypassword";
form.submit();
于 2012-06-11T06:22:34.257 回答
1

不要混淆 POST 请求和 GET 请求。

假设我们有:

inputOne = valueOne
输入二 = 值二
输入三 = 值三

在 GET 请求中,您应该做的就是在所需的 URI 上传递这些:

协议://域/页面?inputOne=valueOne&inputTwo=valueTwo&inputThree=valueThree

在 GET 中,我会说所有参数都通过 URI 传输更好,但在 POST 中,参数通过 HTTP 请求传输。像这样的东西:

POST /mysite/page HTTP/1.1
主机:本地主机:80
连接:保持活动
内容长度:416
缓存控制:max-age=0
来源:http://localhost:80
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5
内容类型:application/x-www-form-urlencoded
接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
参考:http://localhost:8080/mysite/signup/form.html
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8,hr;q=0.6
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3

输入一:值一
输入二:值二
输入三:值三

现在取决于你的情况:

如果您在客户端:

得到:

  • 您可以使用参数将用户重定向到适当的 URI
  • 您可以使用 GET 方法向所需的 URI 发送 AJAX 请求
  • 您可以使用 GET 方法属性生成动态表单并通过 javascript 提交

邮政:

  • 您可以使用 POST 方法向所需的 URI 发送 AJAX 请求
  • 您可以使用 POST 方法属性生成动态表单并通过 javascript 提交

如果您在服务器端:

得到:

  • 您可以使用 HTTP 标头将用户重定向到带有参数的适当 URI

邮政:

  • 您可以手动构建 HTTP 请求
  • 您可以使用 cURL

旁注:还有其他选项,但这些是最常见的选项。

于 2012-06-11T07:17:08.143 回答
1

这是电子邮件表单的示例!

表格:

<form method="post" action="my.php">
<input name="vv[Name]" class="textfield" type="text" />
<input name="vv[Email]" class="textfield" type="text" />
<input name="Reset" value="Reset" class="input" type="reset" />
<input name="Submit" value="Submit" class="input" type="submit" />

我的.php

<?
$to = mail@domain.com";
$subject = "Contact form ";
$from = $_POST['vv']['Email'];

$valid=1;
$message ='';
foreach ($_POST['vv'] as $k=>$v){
if (trim($v)=='')$valid=0;
$k = str_replace('_',' ',$k);
$message .="$k : $v<br>";
}
$message .="<hr />IP: {$_SERVER['REMOTE_ADDR']}";

function sndmail($from,$to,$subject,$message){
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From:".$from ."\r\n";
mail($to, $subject, $message, $headers);
}

if ($valid=='1') {
sndmail($from,$to,$subject,$message);
header( 'Location: correct.html' ) ;
}
else header( 'Location: error.html' ) ;

?>

希望对你有帮助

[编辑] 现在我更仔细地阅读了这个问题,发现我的答案不太适合你的问题。为此事道歉!

于 2012-06-11T09:00:59.410 回答
0

要在提交时将表单字段放入 URL,您需要使用 'GET' 作为表单method,而不是POST.

尽管在您的示例中您正在传递密码。我认为在 URL 中显示它不是一个好主意。

于 2012-06-11T06:22:44.377 回答
0

除了 Dystroy 的回答之外,这是一种通过 javascript 使用动态创建的表单发布数据的动态方式:

纯JavaScript:

var dynForm = document.createElement('form');
dynForm.setAttribute('method','POST');
dynForm.setAttribute('action','');
dynForm.setAttribute('id','dynForm');
dynForm.innerHTML = '';
dynForm.innerHTML += '<input type="hidden" name="login" value="xxxx" />';
dynForm.innerHTML += '<input type="hidden" name="password" value="xxxx" />';
dynForm.innerHTML += '<input type="hidden" name="number" value="12345" />';
dynForm.innerHTML += '<input type="hidden" name="call" value="678910" />';
document.body.appendChild(dynForm);
document.getElementById('dynForm').submit();

jQuery:

$("body").append('<form id="dynForm" action="" method="POST">');
$("#dynForm").append('<input type="hidden" name="login" value="xxxx" />');
$("#dynForm").append('<input type="hidden" name="password" value="xxxx" />');
$("#dynForm").append('<input type="hidden" name="number" value="12345" />');
$("#dynForm").append('<input type="hidden" name="call" value="678910" />');
$("body").append('</form>');
$("#dynForm").submit();


这是使用 AJAX 发布的技术:

纯JavaScript:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","Desired_URI",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send("login=xxxx&password=xxxx&number=12345&call=678910");

jQuery:

$.post({
  url: 'Desired_URI',
  data: {
    login:'xxxx',
    password:'xxxx',
    number:'12345',
    call:'78910'
  }
});
于 2012-06-11T08:03:46.030 回答
0

给你(根据你的要点):

<?php
    $login = '1236567';
    $password = '10152930';
    $officeNumber = array('0212177899','027899899','09111');
?>
<html>
    <head>
    <script type="text/javascript">
        //I assume that the first entry of $officeNumber is the default number
        //I'm saving base URL for further uses
        var baseActionURI = "https://live.domain.co.nz/call.php?login=<?php echo $login; ?>&password=<?php echo $password; ?>";

        function changeAction()
        {
            var oForm = document.forms[0];
            oForm.setAttribute('action',baseActionURI + "&aparty=" + oForm.elements["officeNumbers"].value + "&bparty=" + oForm.elements["officeNumbers"].value)
        }
    </script>
    </head>
    <body>
        <form onsubmit="" method="POST" action="https://live.domain.co.nz/call.php?login=<?php echo $login; ?>&password=<?php echo $password; ?>&aparty=<?php echo $officeNumber[0]; ?>phone&bparty=<?php echo $officeNumber[0];?>">
            <label for="officeNumbers">Office Number:</label>
            <select onchange="javascript:changeAction()" name="officeNumbers" id="officeNumbers">
            <?php
                foreach($officeNumber as $number)
                {
                    echo '<option value="'.$number.'">'.$number.'</option>';
                }
                echo '</select>';
            ?>
            <label for="callTo">Call:</label>
            <input type="text" name="callTo" id="callTo" />
            <input type="submit" value="Call" />
        </form>
    </body>
</html>
于 2012-06-11T08:27:31.153 回答