Javascript AJAX和PHP/SQL错误位置的不确定性

Javascript AJAX和PHP/SQL错误位置的不确定性,javascript,php,ajax,Javascript,Php,Ajax,我只是试图更新数组中的一个元素,而不管出于什么原因,这些信息似乎都无法通过。以下是发送数据的javascript: var xmlhttp = new XMLHttpRequest(); if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5

我只是试图更新数组中的一个元素,而不管出于什么原因,这些信息似乎都无法通过。以下是发送数据的javascript:

var xmlhttp = new XMLHttpRequest();
if (window.XMLHttpRequest) 
{
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} 
else 
{
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
    xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        // Do Nothing
    }
}
xmlhttp.open("GET","updateGame.php?q=" + str + "&e=" + recordText,true);
xmlhttp.send();
其中,
recordText
在别处声明

这就是希望接收
q
e
的PHP:

<?php

$q = intval($_GET['q']);
$e = strval($_GET['e']);



$servername = "localhost";
$username = "*****";
$password = "*****";
$dbname = "*****";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "UPDATE Games SET entries=$e WHERE PINs=$q";
$result = $conn->query($sql) or die($conn->error);

$conn->close();
?>


我已经检查过了,没有更新任何信息。

我修复了您的Ajax文件,在这里,它工作正常,我还修改了您的PHP文件以返回数据,仅用于测试目的。使用给定名称创建两个文本文件,复制粘贴下一个代码并从浏览器运行:

eli_davies_1.php

<html>
  <head>
    <script type="text/javascript">
function ajax_send ( a )
{ var ajax = false;
  if ( window.XMLHttpRequest )
       ajax = new XMLHttpRequest();
  else if ( window.ActiveXObject )
            ajax = new ActiveXObject( "Microsoft.XMLHTTP" );
  if ( ajax )
       { var qq = document.getElementById( "txt_q" ).value;  // DATA TO SEND.
         var ee = document.getElementById( "txt_e" ).value;  // DATA TO SEND.
         ajax.open("GET","eli_davies_2.php?q=" + qq + "&e=" + ee );  // EXECUTE PHP.
         ajax.onreadystatechange =
            function ()
            { if ( ( ajax.readyState ==   4 ) &&
                   ( ( ajax.status   ==   0 ) ||
                     ( ajax.status   == 200 ) ) )
                 { var d = document.getElementById( "div_result" );
                   d.innerHTML = ajax.responseText;  // DISPLAY DATA RETURNED.
                 }
            }
         ajax.send( null );
       }
}
    </script>
  </head>
  <body>
    <input type="text" id="txt_q" value="123" />
    <br/>
    <input type="text" id="txt_e" value="xyz" />
    <br/>
    <button onclick="ajax_send()">Send data</button>
    <br/>
    <div id="div_result"></div>
  </body>
</html>
<?php

$q = intval($_GET['q']);
$e = strval($_GET['e']);

echo "Data received = >" . $q . "< and >" . $e . "<";  // DATA RETURNED (FOR TESTING ONLY).
/*
$servername = "localhost";
$username = "*****";
$password = "*****";
$dbname = "*****";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "UPDATE Games SET entries=$e WHERE PINs=$q";
$result = $conn->query($sql) or die($conn->error);

$conn->close();
*/
?>

函数ajax_send(a)
{var ajax=false;
if(window.XMLHttpRequest)
ajax=新的XMLHttpRequest();
else if(window.ActiveXObject)
ajax=新的ActiveXObject(“Microsoft.XMLHTTP”);
if(ajax)
{var qq=document.getElementById(“txt_q”).value;//要发送的数据。
var ee=document.getElementById(“txt_e”).value;//要发送的数据。
open(“GET”、“eli_davies_2.php?q=“+qq+”&e=“+ee);//执行php。
ajax.onreadystatechange=
函数()
{if((ajax.readyState==4)&&
((ajax.status==0)||
(ajax.status==200)))
{var d=document.getElementById(“div_结果”);
d、 innerHTML=ajax.responseText;//显示返回的数据。
}
}
send(null);
}
}


发送数据
eli_davies_2.php

<html>
  <head>
    <script type="text/javascript">
function ajax_send ( a )
{ var ajax = false;
  if ( window.XMLHttpRequest )
       ajax = new XMLHttpRequest();
  else if ( window.ActiveXObject )
            ajax = new ActiveXObject( "Microsoft.XMLHTTP" );
  if ( ajax )
       { var qq = document.getElementById( "txt_q" ).value;  // DATA TO SEND.
         var ee = document.getElementById( "txt_e" ).value;  // DATA TO SEND.
         ajax.open("GET","eli_davies_2.php?q=" + qq + "&e=" + ee );  // EXECUTE PHP.
         ajax.onreadystatechange =
            function ()
            { if ( ( ajax.readyState ==   4 ) &&
                   ( ( ajax.status   ==   0 ) ||
                     ( ajax.status   == 200 ) ) )
                 { var d = document.getElementById( "div_result" );
                   d.innerHTML = ajax.responseText;  // DISPLAY DATA RETURNED.
                 }
            }
         ajax.send( null );
       }
}
    </script>
  </head>
  <body>
    <input type="text" id="txt_q" value="123" />
    <br/>
    <input type="text" id="txt_e" value="xyz" />
    <br/>
    <button onclick="ajax_send()">Send data</button>
    <br/>
    <div id="div_result"></div>
  </body>
</html>
<?php

$q = intval($_GET['q']);
$e = strval($_GET['e']);

echo "Data received = >" . $q . "< and >" . $e . "<";  // DATA RETURNED (FOR TESTING ONLY).
/*
$servername = "localhost";
$username = "*****";
$password = "*****";
$dbname = "*****";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "UPDATE Games SET entries=$e WHERE PINs=$q";
$result = $conn->query($sql) or die($conn->error);

$conn->close();
*/
?>


您是否在浏览器控制台中观看了请求/响应?超出范围:您可能决定不使用类似库的jquery for ajax请求,但我确实建议您使用它,因为它是交叉浏览器,您不必担心在“onreadystatechange”之前在每个浏览器的每个版本上呈现“open”。添加另一个条件:&&(xmlhttp.status==200 | | xmlhttp.status==0)”。在这些更改之后,它是否正常工作?不,这些更改没有改变结果行为:(添加了一个显示更改的答案。请查看!好吧,这很有效。因此我知道AJAX正在与PHP通信,但PHP仍然没有正确更新mySQL数据库。