Originariamente inviato da Feder
E' possibile far partire una funzione php da Ajax?
Diciamo che detto così non è proprio corretto ma il risultato è proprio quello :-)
ti posto un esmpio (preso da un libro) che fa proprio quello che vuoi te (manca la parte sql ma la puoi integrare te quella)
file Ajax1.js
Codice PHP:
var request = false;
if (navigator.appName == "Microsoft Internet Explorer") {
request = new ActiveXObject("Microsoft.XMLHTTP");
} else {
request = new XMLHttpRequest();
}
function check(name)
{
request.abort();
request.open("GET", "Ajax1.php?name=" + name, true);
request.onreadystatechange=function() {
if (request.readyState == 4) {
document.getElementById('message').innerHTML = request.responseText;
}
}
request.send(null);
}
come vedi questo non fa altro che fare una get al file Ajax1.php, ma questò verrà effettuato in modo asincrono
file Ajax1.php
Codice PHP:
<?php
function checkUsername($username) {
$existingUsers = array('rasmus', 'zeev', 'andi');
// empty check
if ($username == '') {
return '';
} elseif (strlen($username) < 4) {
return '<span class="error">
Username is less than 4 characters
</span>';
} elseif (in_array($username, $existingUsers)) {
return '<span class="error">
Username already exists
</span>';
} else {
return '<span class="ok">
Username is acceptable
</span>';
}
}
if(!class_exists('PHPUnit_Framework_TestCase')) {
$name = isset($_GET['name']) ? $_GET['name'] : '';
echo checkUsername(trim($name));
}
Come vedi c'è un vettore di usr gia inserite invece della ricerca nel db, ma questo si può adattare facilmente
ed infine il file Ajax1.html
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Simple Ajax Example</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style>
.ok {color: green;}
.error {color: red;}
</style>
<script type="text/javascript" src="Ajax1.js"></script>
</head>
<body>
<h1>Registration:</h1>
<form action="#">
<div>
<label for="name">Username:</label>
<input id="name" name="name" type="text" onkeyup="check(this.value)" />
<div id="message"></div>
</div>
</form>
</body>
</html>
fatti questi 3 file poi apri Ajax1.html e guarda il risultato