Ajax不会发布到PHP MYSQL

时间:2013-01-06 19:34:05

标签: php javascript mysql ajax forms

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

  

注意:未定义索引:.. \ input.php中的probcode在线   21

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

我想补充一点,即使AJAX将它添加到表单中,它仍然可以从PHP中消失。我应该使用另一个PHP函数将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要求取代&#34; val2div&#34; 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脚本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)
}

发布到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?

到目前为止,我真的很感谢那些有任何想法的人。

提前致谢!

-D

2 个答案:

答案 0 :(得分:1)

在无休止地查看代码后,我发现使用上面代码的IE时一切正常!这些问题直接来自Firefox解释AJAX的回归。

答案 1 :(得分:0)

在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']}')";