我的页面有 2 个使用 Ajax 的级联选择。 Ajax 正确填充了第二个 Select,但是当我使用 PHP 将数据发布到 MySQL 时,我收到一条错误,指出 AJAX 填充的字段为“未识别”。确切的错误是
Notice: Undefined index: probcode in ..\input.php on line 21
如果未进行 Ajax 调用并且默认选择仍然存在,它确实会发布。仅在 AJAX 替换 DIV 后才会出错。
我想补充一点,就像 from 元素从 PHP 中消失一样,即使 AJAX 将其添加到表单中也是如此。我应该使用另一个 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 调用的内容来替换“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 脚本 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
最佳答案
在不断地检查代码后,我发现使用 IE 和上面的代码时一切正常!这些问题直接与 Firefox 解释 AJAX 返回有关。
关于php - Ajax 不会发布到 PHP MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185896/