使用post方法将javascript变量传递给php和其他html变量

时间:2013-04-22 19:14:30

标签: php javascript

我想使用POST或GET方法将变量行发送到post2.php和其他HTML表单变量。

以下代码出错:

Notice: Undefined index: row1 in C:\xampp\htdocs\PhpProject1\OtherUsableItems\post2.php on line 8

post1.php

 <html>
 <head>
 <SCRIPT language="javascript">
 function addRow(tableID) {
      var table = document.getElementById(tableID);

      var rowCount = table.rows.length;
      var row = table.insertRow(rowCount);

      var colCount = table.rows[0].cells.length;

      for(var i=0; i<colCount; i++) {
          var newcell = row.insertCell(i);

          newcell.innerHTML = table.rows[0].cells[i].innerHTML;
          //alert(newcell.childNodes);
          switch(newcell.childNodes[0].type) {
              case "text":
                      newcell.childNodes[0].value = "";
                      break;
              case "checkbox":
                      newcell.childNodes[0].checked = false;
                      break;
              case "select-one":
                      newcell.childNodes[0].selectedIndex = 0;
                      break;
          }
      }      
  }
  </script>
  <script>
  function count(tableId){
      var rows = document.getElementById(tableId).getElementsByTagName("TR").length;

     // window.location.href = "http://localhost/PhpProject1/OtherUsableItem  /post2.php?rows=" + rows ;
     // alert('Your table has ' + rows + ' rows.');
     $.post("post2.php", { 'row' : rows}, function(rows){alert('rows'+rows);});
  }
  </script>

  </head>
  <body>
  <form action="post2.php" method="post">

   <TABLE id="dataTable"  border="1">
    <TR>
        <TD> 1 </TD>
        <TD> <INPUT name="n1[]"type="text" /> </TD>
        <TD> <INPUT name="n2[]"type="text" /> </TD>
        <TD><SELECT name="country[]" type="select-one">
                <OPTION value="in">India</OPTION>
                <OPTION value="de">Germany</OPTION>
                <OPTION value="fr">France</OPTION>
                <OPTION value="us">United States</OPTION>
                <OPTION value="ch">Switzerland</OPTION>
            </SELECT></TD>
    </TR>
  </TABLE>
 <INPUT type="button" value="Add Row" onclick="addRow('dataTable');"/>
 <button id="bt" onclick="count('dataTable');">Submit</button>
 </form>

 </body>
 </html>

post2.php

<?php
    $n1 = $_POST['n1'];
    $n2 = $_POST['n2'];
    $country = $_POST['country'];
    echo $n1[0];
    echo $n2[0];
    echo $country[0];
    $count = $_POST['row1'];
    echo $count;
?>

2 个答案:

答案 0 :(得分:1)

尝试更改为'row'而不是'row1'

$n1 = $_POST['n1'];
$n2 = $_POST['n2'];
$country = $_POST['country'];
echo $n1[0];
echo $n2[0];
echo $country[0];
$count = $_POST['row'];
echo $count;

将来,使用print_r查看$_POST的价值。

除了上述说明之外,我还会从post1.php中删除第二个<script>标记,并将以下代码放在表单开头的正文中:

<form action="post2.php" method="post" >
  <input id="rowNumber" type="hidden" name="row" value="1"/>

另外,将以下行添加到function addRow

    var rowNumber = document.getElementById('rowNumber');
    rowNumber.value = parseInt( rowNumber.value ) + 1;

答案 1 :(得分:0)

问题是您没有发送正确的Post值。 检查这一行:

  

var rows =   的document.getElementById(TABLEID).getElementsByTagName( “TR”)长度;

它返回的值类似于:{name:'value',name2:'value2'}

之后,您将能够使用$ _POST ['name'] ...

通过php访问

和这一行:

 $.post("post2.php", { 'row' : rows}, function(rows){alert('rows'+rows);});

替换为:

 $.post("post2.php", rows, function(rows){alert('rows'+rows);});

否则您将使用$_POST['row']

进行访问