it-swarm-eu.dev

Esegui esterno PHP dall'articolo di Joomla

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;">&nbsp;</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));
}
?>
  1. 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).

  2. 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.

1
jamesgarrett