Ajax won't post to PHP MYSQL

Ajax won't post to PHP MYSQL

本文关键字:post to PHP MYSQL won Ajax      更新时间:2023-09-26

我有一个使用Ajax的2级联选择页面。Ajax正确地填充第二个Select,但是当我使用PHP将数据发布到MySQL时,我得到一个错误,即Ajax填充的字段是"未识别的"。确切的错误是

注意:未定义的索引:probcode在..'input.php联机21日

如果Ajax调用没有进行,并且默认的选择仍然存在,它就会发布。它只有在AJAX替换了DIV之后才会出错。

我想补充的是,它就像从元素从PHP消失,即使AJAX将其添加到表单。是否有另一个PHP函数,我应该使用post AJAX数据到MySQL?

我不知道Jquery,我正在寻找一种方法来让这个工作与JavaScript的时刻(因为时间和我缺乏Jquery知识),但是,如果有一个简单的方法来添加Jquery到现有的代码,我肯定会感兴趣。我也知道数据是不安全的进入MySQL的时刻,这将在此之后立即解决。我现在正在做一个特定功能的线框。

首先是两个选择。

            <tr>
                <td>Problem Type</td>
                <td><?php
                    mysql_connect("localhost", "root", "") or die("Connection Failed");
                    mysql_select_db("test")or die("Connection Failed");
                    $query = "SELECT * FROM wfprobtype ORDER BY probtype ASC";
                    $result = mysql_query($query);
                    ?>
                    <select name="probtype" id="probtype" onchange="changeContent(this.value)">
                    <?php
                    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    ?>
                    <option value="<?php echo $line['ID'];?>" > <?php echo $line['probtype'];?> </option>
                    <?php
                    } 
                    mysql_close()
                    ?>
                    </select>
                </td>
                <td>Problem: </td>
                <td>
                    <div id="val2div">
                        <select name="probcode" id="probcode">
                            <option value="default"></option>
                        </select>
                    </div>
                </td>
            </tr>

这是Ajax调用来替换"val2div" val2.php

<?php
$val2=intval($_GET['val2']);
mysql_connect("localhost", "root", "") or die("Connection Failed");
mysql_select_db("test")or die("Connection Failed");
$query = "SELECT * FROM wfprobcode WHERE typeID='$val2' ORDER BY Probcode ASC";
$result = mysql_query($query);
?>
<select name="probcode" id="probcode"  onchange="">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['Probcode'];?>"> <?php echo $line['Probcode'];?> </option>
<?php
}
mysql_close()
?>

Ajax Script Dny.js

function changeContent(val)
{
if (val=="")
  // if blank, we'll set our innerHTML to be blank.
  {
  document.getElementById("val2div").innerHTML="";
  return;
  }
if (window.XMLHttpRequest) // new browser
  {  
      xmlhttp=new XMLHttpRequest(); // new browser
      alert("newb");
  }
else // Old Browser
  {  
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
  }
  // on state change
  xmlhttp.onreadystatechange=function()
  {
  // if we get a good response from the webpage, display the output
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
      document.getElementById("val2div").innerHTML=xmlhttp.responseText;
  }
  }
 // GET file. 
xmlhttp.open("GET","val2.php?val2="+val, true);
xmlhttp.send();
 alert(val)
}

post到MySQL input.PHP

    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("test", $con);
    $sql="INSERT INTO `test`.`test` (
    `ID`,
    `Dattime`, 
    `probtype`,
    `probcode`
    )
    VALUES(
    NULL,NOW(),'$_POST[probtype]','$_POST[probcode]')";
    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }
mysql_close($con); ?> 

我希望我只是错过了一些简单的东西在那一刻。这是我第一次使用Ajax。我非常感谢此刻所有的帮助。

编辑:-最后一次编辑之前,我试图重写整个东西。是否有一种方法,使用Jquery我可以解决这个问题?如果没有,谁有一个简单的方法,使它只是完整的回发没有AJAX?

我非常感谢那些到目前为止做出贡献的人,以及任何有任何想法的人。

提前感谢!

-

在无休止地审查代码后,我发现在使用IE和上面的代码时一切都很好!

在val2.php中缺少关闭元素

 </select>

我猜在input。php中,应该是'{$_POST['probtype']}'而不是'$_POST[probtype]'

$sql="INSERT INTO `test`.`test` (
`ID`,
`Dattime`, 
`probtype`,
`probcode`
)
VALUES(
NULL,NOW(),'{$_POST['probtype']}','{$_POST['probcode']}')";