【问题标题】:onsubmit form values to php sql requestonsubmit 表单值到 php sql 请求
【发布时间】:2013-06-18 06:39:23
【问题描述】:

我有许多来自表单的输入值,我想使用 ajax 代码将它们推送到 PHP 代码。这是我正在尝试做的一个例子。我有 test1 和 test2,当用户按下搜索按钮时我想跟踪它们。

目前它只获取test1的值“getResults(this.test1.value)”我想知道如何使用相同的方法获取test2的值。

<form name="input" action="" method="" onsubmit="getResults(this.test1.value); return false;">

  <input type="text" name="test1">

<select id="test2" name="test2">
  <option value="">Make a choice ...</option>
  <option value="c1">choice 1</option>
  <option value="c2">choice 2</option>
  <option value="c3">choice 3</option>
</select>    


<input type="submit" value="Search">

</form>

<div id="here"><b></b></div> 

getresults 方法,目前只支持一个字符串,如何添加更多参数?

 function getResults(str)
 {
 if (str=="")
   {
   document.getElementById("here").innerHTML="";
   return;
   } 
 else (window.XMLHttpRequest)
   {
   xmlhttp=new XMLHttpRequest();
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("here").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","info.php?q="+str,true);
 xmlhttp.send();
 }

最后更重要的是如何从 info.php 中检索值?非常感谢

<?php
$test1 = $_GET['test1'];
echo "$test1";

$test2 = $_POST["test2"];
echo "$test2";
?> 

【问题讨论】:

  • 您是否尝试以完全相同的方式处理其他输入?

标签: php javascript html ajax web


【解决方案1】:

您不需要将参数传递给函数。我们可以在那里获取表单字段的值。

<html>
    <head>
    <script type="text/javascript">
        function getResults()
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("here").innerHTML=xmlhttp.responseText;
                }
            }

            var data = "test1="+document.getElementById("test1").value+"&test2="+document.getElementById("test2").value;

            xmlhttp.open("POST","info.php",true);
            xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xmlhttp.send(data);
        }
    </script>
    </head>
    <body>
        <form name="input" action="" method="" onsubmit="getResults(); return false;">

        <input type="text" name="test1" id="test1">

        <select id="test2" name="test2">
            <option value="">Make a choice ...</option>
            <option value="c1">choice 1</option>
            <option value="c2">choice 2</option>
            <option value="c3">choice 3</option>
        </select>    

        <input type="submit" value="Search">

        </form>

        <div id="here"><b></b></div>
    </body>
</html>

比在您的info.php 文件中执行此操作以获取通过Ajax 发送的变量,

<?php
    $test1 = $_POST["test1"];
    $test2 = $_POST["test2"];

    echo "Test1: ".$test1."<br/>Test2: ".$test2."";
?>

【讨论】:

  • 谢谢它的工作,但是如果我想要两个以上的值,它怎么写,它一直输出奇怪的东西? var data = "test1="+document.getElementById("test1").value+"&test2="+document.getElementById("test2").value+"&test3="+document.getElementById("test3").value;
  • 您只需附加更多像这样的值var data = "test1="+document.getElementById("test1").value+"&amp;test2="+document.getElementById("test2").value+"&amp;test3="+document.getElementById("test3").value+"&amp;test4="+document.getElementById("test4").value;
【解决方案2】:

它不提取两个值的原因是 1) 您需要向表单添加一个方法。您可以发布或获取,而不是两者。2)在您的 php 中,您将测试 1 定义为来自 get 数组,将变量 2 定义为来自 post 数组。如果您从 get 数组中生成 $test2 它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多