Bonjour l'Alsace et le monde,
J'ai une page web qui fonctionnait bien en PHP7. Le passage a la version 8 s'est faite sans douleur sauf pour la partie concernée par AJAX qui ne marche plus. Enfin, je suppose que l'erreur vient de là mais j'ai peut-être fait une frappe malencontreuse quelque part qui n'a rien à voir avec le changement de version... Les fichiers concernés :
ajax.js
ajax.php
et index.php (extrait) :
La console me dit :
J'ai beau lire et relire, je ne vois rien... Merci de votre aide
J'ai une page web qui fonctionnait bien en PHP7. Le passage a la version 8 s'est faite sans douleur sauf pour la partie concernée par AJAX qui ne marche plus. Enfin, je suppose que l'erreur vient de là mais j'ai peut-être fait une frappe malencontreuse quelque part qui n'a rien à voir avec le changement de version... Les fichiers concernés :
ajax.js
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) { }
}
if (!xmlHttp)
alert("Erreur de création de l'objet XMLHttpRequest.");
else
return xmlHttp;
}
function process()
{
if (xmlHttp)
{
try
{
name = encodeURIComponent(document.getElementById("ger").value);
if (name == "") {name = 'x'};
console.log("name : " + name);
xmlHttp.open("GET", "ajax.php?name=" + name, true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
catch (e)
{
alert("Connexion au serveur impossible :\n" + e.toString());
}
}
}
function handleRequestStateChange()
{
if (xmlHttp.readyState == 4)
if (xmlHttp.status == 200 || xmlHttp.status == 304)
handleServerResponse()
}
function handleServerResponse()
{
var xmlResponse = xmlHttp.responseXML;
console.log("XML Response : " + xmlHttp.responseXML);
xmlRoot = xmlResponse.documentElement;
kinnigArray = xmlRoot.getElementsByTagName("kinnig");
var html = "";
for (var i=0; i<kinnigArray.length; i++)
{html += '<a onclick="onKlik(this.textContent, 0)">' + kinnigArray.item(i).firstChild.data + '</a>';}
var myDiv = document.getElementById("goulakaat");
myDiv.innerHTML = html;
}
ajax.php
<?php
header('Content-Type: application/xml ; charset = utf-8');
mb_internal_encoding("UTF-8");
//error_reporting(E_ALL);
//ini_set("display_errors", 1);
include ('connect.inc.php');
$dom = new DOMDocument();
$respont = $dom->createElement('respont');
$dom->appendChild($respont);
$name = $_GET['name'];
$name= mysqli_real_escape_string($link, $name);
$kinnigou = mysqli_query($link,"SELECT poz FROM ajaks WHERE poz LIKE '".$name."%"."' ORDER BY poz LIMIT 20");
while ($linenn = mysqli_fetch_array($kinnigou))
{
$kinnig = $dom->createElement('kinnig');
$encoded=htmlentities ("$linenn['poz']", ENT_QUOTES, 'UTF-8');
$kinnigText = $dom->createTextNode("$encoded");
$kinnig->appendChild($kinnigText);
$respont->appendChild($kinnig);
}
$xmlString = $dom->saveXML();
echo $xmlString;
?>
et index.php (extrait) :
<?php
header( 'content-type: text/html; charset=utf-8' );
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"><title>ar penefi gourt</title>
<script language="JavaScript">
function non_vide()
{
envoi=MyForm.ger.value;
envoi=envoi.trim();
if (envoi == "")
{ MyForm.ger.value=''; return false;}
else
{ MyForm.ger.value=envoi; return true;}
}
</script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="colg">
<div id="enva">
<form class="klask" action="" method="post" id="MyForm" onsubmit= "return (non_vide());">
<input name="ger" id="ger" size="8" type="text" onKeyup="process()" autocomplete="off" autocapitalize="none"/>
<input value="" type="submit"></form>
</div>
<div id="suggestions">
</div>
</div>
</body>
</html>
La console me dit :
a écrit :
localhost/test-ajax/ajax.php?name=a 500 (Internal Server Error)
process @ ajax.js:36 (ligne de code : xmlHttp.send(null);)
onkeyup @ (index):27
J'ai beau lire et relire, je ne vois rien... Merci de votre aide