0

form と input type=hidden を使用して DB に挿入する ajax 関数を実行していますが、同じページに複数のフォームを配置すると、常に最初のフォームの最初の値だけが取得されます

コードは次のとおりです。

Ajax 関数

<script language="javascript" type="text/javascript">
   //Browser Support Code
   function ajaxFunction(){
      var ajaxRequest; // The variable that makes Ajax possible!  
      try{
         // Opera 8.0+, Firefox, Safari
         ajaxRequest = new XMLHttpRequest();
      } catch (e){
         // Internet Explorer Browsers
         try{
             ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try{
                   ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e){
                  // Something went wrong
                  alert("Your browser broke!");
                  return false;
                }
            }
       }
       // Create a function that will receive data sent from the server
       ajaxRequest.onreadystatechange = function(){
       if(ajaxRequest.readyState == 4){
          var ajaxDisplay = document.getElementById("ajaxDiv");
          ajaxDisplay.innerHTML = ajaxRequest.responseText;
       }
    }
    var in1 = document.getElementById("in1").value;
    var queryString1 = "?in1=" + in1;

    //ajaxRequest.open("GET", "/sites/all/php/check.php" + queryString, true);
    ajaxRequest.open("GET", "/sites/all/php/check.php" + queryString1, true);
    ajaxRequest.send(null);
}
//–&gt;
</script>

ここにhtmlフォームがあります

    <form name="myForm1">
         <input type="hidden" value="1" id="in1">
         <a onclick="ajaxFunction()" class="folloo"></a> 
         <form name="myForm2">
               <input type="hidden" value="2" id="in1">
               <a onclick="ajaxFunction()" class="folloo"></a> 
               <form name="myForm3">
                     <input type="hidden" value="3" id="in1">
                     <a onclick="ajaxFunction()" class="folloo"></a>
               </form>
         </form>
   </form>

DBクエリを実行するcheck.phpコードは次のとおりです

<?php
   //Connect to MySQL Server
   //connect to your database ** EDIT REQUIRED HERE **
   mysql_connect("localhost","admin","123456") or die('Cannot connect to the database
                 because: ' . mysql_error());

   //specify database ** EDIT REQUIRED HERE **
   mysql_select_db("dbname") or die("Unable to select database"); 
   //select which database we're using

   // Retrieve data from Query String
   $in1 = $_GET['in1'];

   // Escape User Input to help prevent SQL Injection
   $in1 = mysql_real_escape_string($in1);

   //Build and run a SQL Query on our MySQL tutorial
   if($in1){
       mysql_query("INSERT INTO test (name)
                  VALUES ('" . $in1. "')");
   }

?>

リンクをクリックすると、常に最初の値が送信されます。

ここで何が問題なのか誰か教えてください。

4

1 に答える 1

1

idはページ上で一意である必要があります。同じ値を持つinput type="hidden"要素が複数あることがわかりました( )。同じ値を持つ要素が複数ある場合、(たとえば、 を使用して) 検索しようとすると、ほとんどのブラウザで最初の要素が表示されますが、マークアップ/DOM が無効であるため、未定義の動作です。id"in1"idgetElementById

修正は、一意になるように ID を修正するか、ID をまったく使用せず、一意である必要のないものを使用すること です。複数の一致する要素があるという事実に対処します。nameclassquerySelectorAll

于 2012-06-08T16:33:02.593 に答える