php - Ajax 不会发布到 PHP MYSQL

标签 php javascript mysql ajax forms

我的页面有 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/

相关文章:

javascript - Node.js setTimeout 上下文问题

php - 具有多单位支持功能的库存

php - 将表单数据插入数据库

php - 匹配两个数组以从第二个数组中获取值

php - YII - 必须设置扩展属性错误

c# - 另一个 ASP.net AJAX SYS 未定义错误

javascript - 在 Code.org HTML Web Lab 中,当 Javascript 变量达到某个数字时,如何为它着色?

php - 从通过 AJAX 检索的对象设置文本字段值

php - MySQL 更新/插入删除 unicode 条目的反斜杠

mysql - 将表一分为二并保存关系