Felix Riesterer: PHP Script mit Ajax für Smarty zerlegen

Beitrag lesen

Lieber HeikoH,

ich fürchte, ich kann Dir nicht wirklich "helfen", aber ich habe da so ein paar Ideen, die vielleicht nicht ganz unnütz sind.

ich habe hier ein PHP Script mit Ajax welches ich bei mir einbinden möchte.

Was machen Besucher/Nutzer Deiner Seite, wenn sie kein JavaScript verfügbar haben? Ist Deine Seite auch ohne dieses Benutzbar? Im Idealfall ergänzt JavaScript eine bestehende Funktion nur, z.B. vereinfacht die Interaktion (z.B. mit Formularen). Keinesfalls sollten wesentliche Funktionalitäten von JavaScript abhängig sein.

<?
if ( !defined( 'SMARTY_DIR' ) )

Diese Shorttags sind nicht gut! Auch XML hat sie, weshalb der PHP-Interpreter in ungünstligen Fällen anspringt, um XML als PHP zu parsen. Daher wäre es besser, wenn Du keine Shorttags benutzt, sondern Deine Scripte immer mit "<?php" beginnen lässt. Vielleicht kannst Du mit ini_set() diese Einstellung am Anfang Deines Scripts entsprechend vornehmen, falls Du auf Deinem Webspace diese Option so vorfindest?

// Testausgabe
      if (isset($_POST['send'])) {
        print_r($_POST);
      }
?>

<html>
      <?
      $xajax->printJavascript("js/");
      ?>
<script type="text/javascript">
  function addOption(selectId, txt, val) {
    var objOption = new Option(txt, val);
     document.getElementById(selectId).options.add(objOption);
   }
</script>
</head>

Ich nehme an, dass Du genau solches mit Smarty jetzt besser machen möchtest?

<select name="txtfrom" id="txtfrom"
onchange="xajax_addtxtstateprovince('txtstateprovince', document.frmPlan.txtfrom.value)">

Hier steigen diejenigen aus, die kein JavaScript verfügbar haben. Und die, die mit der Tastatur navigieren, können nur die zweite Option nutzen, da bereits dort das onchange feuert, ohne dass sie je eine Chance hätten, sich bis zur letzten Option durchzutippen. Also ist für Leute, die lieber nicht die Maus benutzen, hier eine Barriere. Willst Du das so?

Desweiteren sollte JavaScript-Code mittels JavaScript ins Dokument geschrieben werden (Stichwort "unobtrusive"). Das bedeutet, dass Du im <head> der Datei Deine JavaScripte aus externen Dateien lädst, um mit den dortigen Scripten Deine Seite zu "bearbeiten", also um Deine onchange- oder sonstigen Eventhandler im Dokument einzutragen. Das macht übrigens auch das Pflegen des Codes wesentlich leichter!

Liebe Grüße aus Ellwangen,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)