Ho un file php che farà eco ai risultati alla fine del file. Voglio da un evento onclick lanciare Javascript che chiamerà questo file php e stamperà i risultati sullo schermo. Il mio javascript è simile a questo, ma ricevo un errore 500 e non sono sicuro del perché.
Cosa non è corretto nella mia sintassi? O qual è il modo corretto per farlo in Joomla 3.5.
<form id="HomePage" method="post">
<div style="padding-top: 10px;"><input type="submit" value="Submit" id="ajaxButton" /></div>
<div style="padding-top: 10px;"> </div>
</div>
<script type="text/javascript">
(function() {
var httpRequest;
document.getElementById("ajaxButton").onclick = function() { makeRequest('Test.php'); };
function makeRequest(url) {
httpRequest = new XMLHttpRequest();
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = alertContents;
httpRequest.open('GET', url);
httpRequest.send();
}
function alertContents() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
alert(httpRequest.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
})();
</script>
</form>
[~ ~ #] modifica [~ ~ #]
Questo è il contenuto del mio Test.php sembra errato? Se lo aggiungo direttamente a un articolo, viene restituito il risultato desiderato, ma per qualche motivo non riesco a ottenere la sintassi corretta per chiamarla da un articolo separato
<?php
$option = array();
$option['driver'] = 'mssql';
$option['Host'] = 'Host';
$option['user'] = 'user';
$option['password'] = 'password';
$option['database'] = 'database';
$option['prefix'] = '';
$db = JDatabase::getInstance( $option );
$result = $db->getQuery(true);
$result->select($db->quoteName(array('trackandfieldresults')));
$result->from($db->quoteName('[TrackData]'));
$db->setQuery($result);
$row = $db->loadRowList();
echo $row['0']
?>
[~ ~ #] modifica [~ ~ #]
Aggiornato PHP
<?php
$serverName = "ServerName";
$uid = "sqlusername";
$pwd = "sqlpassword";
$databaseName = "DBName";
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>$databaseName);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
Ho appena incollato il tuo codice in un articolo sulla home page di un sito di joomla 3.6 e ho messo un Test.php alla radice di anch'esso e ha funzionato bene. A mio avviso, se stai facendo esattamente questo, allora c'è un problema con il tuo file php perché in questa richiesta Joomla non è realmente coinvolto (Nota per 500 errori la prima cosa che guarderei sarebbe i permessi del file).
Questo approccio va bene se sei l'unico sviluppatore sul sito e il tuo php non interagisce affatto con Joomla. Joomla fornisce un modo semplice per fare richieste ajax con moduli usando l'interfaccia com_ajax: doc is qui . Questo sarebbe più ordinato, più portatile, meno soggetto a rotture accidentali e ti darebbe accesso all'applicazione Joomla - d'altra parte, l'app Joomla deve caricarsi completamente in modo da perdere alcuni microsecondi.