2013-06-17 2 views
0

У меня есть много значений ввода из формы, и я хотел бы нажать их на PHP-код с помощью ajax-кода. Вот пример того, что я пытаюсь сделать. У меня есть test1 и test2, которые я хочу отслеживать, когда пользователь нажимает кнопку поиска.onsubmit form values ​​to php sql request

Прямо сейчас он получает значение 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"; 
?> 
+0

ли вы попытаетесь сделать это точно так же, как для другого входа? – Musa

ответ

0

Вам не нужно передавать аргумент функции. Мы можем получить значение поля формы.

<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.""; 
?> 
+0

Спасибо, что это работает, однако, если мне нужно больше двух значений, как это записать, он продолжает выводить странные вещи? var data = "test1 =" + document.getElementById ("test1"). value + "& test2 =" + document.getElementById ("test2"). value + "& test3 =" + document.getElementById ("test3"). value; – user2495097

+0

Вы просто добавляете больше значений, подобных этому: var data = test1 = "+ document.getElementById (" test1 "). Value +" & test2 = "+ document.getElementById (" test2 "). Value +" & test3 = "+ document. . getElementById ("test3") значение + "& test4 =" + document.getElementById ("test4") значение;. ' –

0

Причина, по которой он не тянет оба значения, состоит в том, что: 1) вам нужно добавить метод в вашу форму. Вы можете делать сообщения или получать, а не оба. 2. В вашем php вы определяете тест 1 как из массива get и переменной 2 как из массива post. Если вы сделаете $ test2 из массива get, он должен работать.