Javascript AJAX和PHP/SQL错误位置的不确定性
我只是试图更新数组中的一个元素,而不管出于什么原因,这些信息似乎都无法通过。以下是发送数据的javascript: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
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数据库。