it-swarm.com.de

Externe PHP Datei aus Joomla-Artikel ausführen

Ich habe eine PHP-Datei, die die Ergebnisse am Ende der Datei wiedergibt. Ich möchte aus einem Onclick-Ereignis ein Javascript starten, das diese PHP-Datei aufruft und die Ergebnisse auf dem Bildschirm ausgibt. Mein Javascript sieht so aus, aber ich erhalte die Fehlermeldung 500 und bin mir nicht sicher warum.

Was ist in meiner Syntax falsch? Oder was ist der richtige Weg, um dies in Joomla 3.5 zu tun.

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

EDIT
Dies ist der Inhalt meiner Test.php sieht das falsch aus? Wenn ich dies direkt zu einem Artikel hinzufüge, wird das gewünschte Ergebnis zurückgegeben, aber aus irgendeinem Grund kann ich die Syntax für den Aufruf aus einem separaten Artikel nicht korrekt festlegen

<?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']
?>

EDIT
Aktualisiert PHP File

<?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. Ich habe gerade deinen Code in einen Artikel auf der Homepage einer Joomla 3.6-Site eingefügt und eine Test.php-Datei an die Wurzel der auch gestellt und es hat gut funktioniert. Meiner Meinung nach, wenn Sie genau das tun, dann gibt es ein Problem mit Ihrer PHP-Datei, weil Joomla in dieser Anfrage nicht wirklich involviert ist (Hinweis: Bei 500 Fehlern würde ich als erstes die Berechtigungen der Datei prüfen).

  2. Dieser Ansatz ist in Ordnung, wenn Sie der einzige Entwickler auf der Website sind und Ihr PHP überhaupt nicht mit Joomla interagiert. Joomla bietet eine einfache Möglichkeit, Ajax-Anfragen mit Modulen über die com_ajax-Schnittstelle zu stellen: doc is here . Dies ist übersichtlicher, portabler, weniger anfällig für versehentliche Beschädigungen und ermöglicht Ihnen den Zugriff auf die Joomla-Anwendung. Andererseits muss die Joomla-App vollständig geladen werden, damit Sie einige Mikrosekunden verlieren.

1
jamesgarrett