Willkommen, Gast
Angemeldet bleiben:
10 Nov 2021
Am 10.11. findet in Liestal ein weiteres JUG statt. Schwerpunkt: Page Builder.
Mehr lesen...

THEMA:

PHP innerhalb von JavaScript funktioniert nicht 27 Nov 2014 18:21 #39999

Hallo liebe Joomla-Gemeinde,

ich versuche seit 2 Tagen eine Lösung für mein Problem zu finden. ich hoffe, Ihr könnt mir helfen.

Ich habe ein Modul für Joomla 2.5. entwickelt. In diesem Modul wird eine Datei per Ajax hochgeladen.

In der tmpl/index.php Datei habe ich einige JavaScript-Codes und innerhalb von JavaScript gibt es noch PHP-Codes. So funktionert alles wunderbar.
var options = {				
  target: '#message',
  url: '<?php echo JURI::base(); ?>modules/mod_transcost/tmpl/uploader.php',
  beforeSubmit: function() {
  jQuery('#progressbar').show();
  jQuery('#progressbar').html('<img src="<?php echo JURI::base();?>modules/mod_transcost/images/uploading.gif") border="0" />');			}


jQuery('#uploadForm').change(function() {					
  jQuery(this).ajaxSubmit(options);	
  return false;
});

Problem:

Wenn ich aber die JavaScript in einer separaten Datei (module.js) ablege und in mein Modul einbinde, dann funktionert es nicht mehr. Die JavaScript-Datei habe ich so eingebunden und die Datei ist eingebunden:
$document =& JFactory::getDocument();
$document->addScript(JURI::base().'modules/my_module/tmpl/js/module.js'); 

Error, den ich bekomme:
GET http://localhost/Joomla/index.php/ru/%3C?php%20echo%20JURI::base();?%3Emodules/mod_transcost/images/uploading.gif 404 (Not Found)

POST http://localhost/Joomla/index.php/ru/%3C?php%20echo%20JURI::base();%20?%3Emodules/mod_transcost/tmpl/uploader.php 404 (Not Found)

D.h. uploading.gif und uploader.php können nicht gefunden werden.

Dieses Problem habe ich nur dann, wenn ich JavaScript in einer separaten Datei habe und darauf verweise. Wenn JavaScript in der Datei "index.php" drin steht, dann gibt es keine Probleme.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PHP innerhalb von JavaScript funktioniert nicht 27 Nov 2014 23:24 #40000

Hallo Piero

Dateien mit .js-Endung werden vom PHP-Interpreter nicht verarbeitet und daher bleibt der PHP-Code in der JavaScript-Datei einfach so stehen, wie er ist. Die URL mit dem PHP-Code gibt es dann natürlich nicht.

Falls ich gerade keinen Denkfehler habe, sollte es funktionieren, wenn du die module.js in module.php umbenennst und dann entsprechend mit addScript einbindest.

Viele Grüsse
Marco

Noch ein Nachtrag: Falls es nicht funktioniert, könntest du die PHP-Variablen in der .js-Datei durch JavaScript-Variablen ersetzen und die JavaScript-Variablen dann im PHP-Code über die Methode addScriptDeclaration initialisieren.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PHP innerhalb von JavaScript funktioniert nicht 28 Nov 2014 16:29 #40001

Hallo Marco,

danke für deine Antwort. Dein erster Vorschlag hat nicht funktioniert.

Da ich ein Anfänger bin, weiß ich nicht genau, wie man den PHP-Code über die Methode AddScriptDeclaration initialisiert. Ich habe aber folgendes probiert:
var phpUploaderPath;
  var options = {				
  target: '#message', //Div tag where content info will be loaded in
  url: phpUploaderPath,  //The php file that handles the file that is uploaded
  beforeSubmit: function() {
  jQuery('#progressbar').show();
}

$phpUploaderPath = JURI::base().'modules/mod_transcost/tmpl/uploader.php';
JFactory::getDocument()->addScriptDeclaration( $phpUploaderPath );

hat aber nicht funktioniert. Könntest vllt. zeigen, wie man das machen könnte?

danke im voraus

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PHP innerhalb von JavaScript funktioniert nicht 29 Nov 2014 01:11 #40004

Hallo Piero

Ich habe mir deinen Code gerade nochmal genauer angeguckt. Du kannst dein JavaScript-Code einfach in eine Funktion packen und dann in PHP über addScriptDeclaration aufrufen. Deine JavaScript-Datei sollte dann wie folgt aussehen:
function pierosAjaxCall(phpUploaderPath) {
    var options = {				
      target: '#message', //Div tag where content info will be loaded in
      url: phpUploaderPath,  //The php file that handles the file that is uploaded
      beforeSubmit: function() {
         jQuery('#progressbar').show();
      }
    };

    ... // TODO restlicher code
}

Und in PHP machst du dann:
$phpUploaderPath = JURI::base().'modules/mod_transcost/tmpl/uploader.php';
JFactory::getDocument()->addScriptDeclaration('pierosAjaxCall(' . $phpUploaderPath . ');');

Letzteres muss im Code nach dem Hinzufügen des Skripts platziert werden. Ich habe es nicht getestet, hoffe aber aber, dass es funktioniert :-)

Grüsse
Marco

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1