[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
PHP-script mit Ajax aufrufen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

PHP-script mit Ajax aufrufen

8. Apr 2014, 13:10

hallo @ all,

bin jetzt fast am verzweifeln und bitte euch deshalb um Hilfe.

folgendes Problem:

ich möchte ein PHP-script mit Jquery ajax() aufrufen; das script soll eine DB-Abfrage durchführen, aber es passiert nix.

HTML

Code: Alles auswählen

<button id="delProfilpic" class="btn btn_gray">Bild löschen</button>

mein JS

Code: Alles auswählen

jQuery("#delProfilpic").click(function() {  
                userid = "<?php echo $_SESSION['user_id']; ?>";
                ajaxcontroller =  "<?php echo $REX[INCLUDE_PATH] . '/addons/marktadresse/classes/ajaxcall.inc.php'; ?>";
                    
             jQuery.ajax({
                    type: "POST",
                    url: "ajaxcontroller",
                    data:                       
                        "user_id=userid"
                    
                });
                
                return false;
            });
        }); 
das PHP-script

Code: Alles auswählen

if (isset($_POST['user_id']) && !empty($_POST['user_id'])) {
    $user_id = $_POST['user_id'];
}

 $sql = rex_sql::factory();
 $sql->setTable('rex_markt_userdata');
 $where = sprintf("user_id = '%s'", $sql->escape($user_id));
 $sql->setWhere($where);
 $sql->setValue('bild', '');
 if ($sql->update()) {
            return true;
        }
Ich hab schon alles mögliche probiert, aber es passiert nichts. Irgendwie krieg ich den Aufruf nicht hin.

Wär schön, wenn mir jemand helfen würde
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Meusi
Beiträge: 158
Registriert: 18. Mär 2009, 16:18

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 14:16

hey :)

das problem liegt darin, dass Daten im Include-Ordner nicht direkt aufgerufen werden können.

Am Besten machst du das via eine Addon-Config.

Code: Alles auswählen

<?php
if(!$REX['REDAXO']) {
	if(rex_server('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest') {
	
		if (isset($_POST['user_id']) && !empty($_POST['user_id'])) {
			$user_id = $_POST['user_id'];
		}
	
		$sql = rex_sql::factory();
		$sql->setTable('rex_markt_userdata');
		$where = sprintf("user_id = '%s'", $sql->escape($user_id));
		$sql->setWhere($where);
		$sql->setValue('bild', '');
		if ($sql->update()) {
            echo 1;
        }
		echo 0;
		exit();
		
	}
}
?>
Und dann muss dein "ajaxcontroller" "index.php" heißen.

Bin mir aber nicht sicher, ob du 100% Sicher dadurch bist. Ajax abfragen sind immer so eine heikle Sache :)

Gruß Meusi
Folgende Threads stehen offen:

ceekay82
Beiträge: 54
Registriert: 5. Aug 2008, 12:55

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 14:18

Hallo Anita,

da fällt mir auf, dass z.b. "$REX[INCLUDE_PATH]" doch in das Installationsverzeichnis von Redaxo verweist. Die Verzeichnisse darunter sind aber aufgrund der .htaccess nicht erreichbar.

Dann fehlt bei den Variablen das "var" zur Initilisierung.

Viele Grüße
Christian
Für mehr Selbstständigkeit an PCs:
Frage + Google = Antwort

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 16:25

danke Euch,

hab jetzt die die PHP-Datei, die von Ajax aufgerufen wird in files/addons liegen, aber es klappt trotzdem nicht.

Die PHP-Datei soll ja später eine richtige Klasse mit mehreren functions werden, die wahlweise mit Ajax aufgerufen werden.

muss wohl doch ein scriptfehler drin sein

warum muss der ajaxcontroller index.php heissen?
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 16:31

Ist das ne Backend Geschichte? Kannst es dann evtl. wie beim Slice Status Addon machen:

JS:
https://github.com/RexDude/slice_status ... tus.js#L54

PHP:
https://github.com/RexDude/slice_status ... hp#L23-L29

ceekay82
Beiträge: 54
Registriert: 5. Aug 2008, 12:55

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 17:18

Hey Anita,

es kann so nicht funktionieren, weil die PHP-Datei außerhalb von Redaxo aufgerufen wird und somit die rex-sql-Klassen nicht zur Verfügung stehen.

Versuche es mal mit folgendem (ungetesten] Code:

Code: Alles auswählen

<?php
// configuration
$dbhost 	= "";
$dbname		= "";
$dbuser		= "";
$dbpass		= "";

// database connection
try { 
    $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
    } 
catch(PDOException $e) 
    { 
    var_dump($e);
    } 
    
if (isset($_GET['user_id']) && !empty($_GET['user_id'])) {
    $user_id = $_POST['user_id'];    
    $sql = "UPDATE rex_markt_userdata SET bild = '' WHERE user_id = $user_id";
    $query = $pdo->prepare($sql);
    $query->execute();

}  
?>
Die Datenbank-Daten müsstest du selbstverständlich noch ausfüllen. Danach rufst du die Datei über die Browserzeile auf: http://www.example.com/files/addons/mar ... ser_id=123. Eine weiße Seite wäre dann top oder eben eine Fehlermeldung, die zur Fehlersuche beiträgt.

Gruß
ceekay

EDIT: PS - falls es eine Frontend-Geschichte ist...
Für mehr Selbstständigkeit an PCs:
Frage + Google = Antwort

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 17:56

das Ganze gehört zu einem AddOn und läuft im frontend;

vielleicht gibt es auch einen anderen Lösungsansatz; das Problem ist, in einem Formular (user-profil) ist auch ein Bild (mit fileupload) und dieses soll beim bearbeiten der Profildaten über einen Button gelöscht werden können ohne submit

da dachte ich eben, die einzige Möglichkeit wäre Ajax

Werde mal mit stinknormalem mysql-query probieren
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: PHP-script mit Ajax aufrufen

8. Apr 2014, 19:13

Hallo Anita,

ich würde einfach über die Addon-Config gehen:

Im Addon deine Funktion hinterlegen:

Code: Alles auswählen

function hier_deine_funktion($params) {
global $REX; // falls benötigt
/*
hier alles weitere... rex_get(), rex_sql() etc. können genutzt werden
*/

return ''; // oder eine gewünschte Ausgabe zurückgeben

}

In der config.inc.php des Addons dann einen Extension-Point aufrufen:

Code: Alles auswählen

// Aufruf der Funktion dann z.B. mit index.php?ajaxcall_user=123 
if(!REX['REDAXO'] && rex_get('ajaxcall_user', 'integer', 0)!=0) {
    rex_register_extension('OUTPUT_FILTER', 'hier_deine_funktion');
}

Gruß
Nico

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

9. Apr 2014, 10:36

Hallo Nico,

vielen Dank, werde ich probieren. Mit Extension-Points habe ich noch garnicht gearbeitet, da muss ich mich mal damit auseinandersetzen.
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: PHP-script mit Ajax aufrufen

9. Apr 2014, 19:27

Hallo Anita,

hier gibt es einige Infos und Beispiele zu den Extension-Points:

http://www.redaxo.org/de/doku/extension-points/

Kann sehr hilfreich sein damit zu arbeiten.

Gruß
Nico

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

8. Mai 2014, 19:32

Hi, ich hab ein Problem was auch etwas in diese Richtung geht.
REDAXO: 4.6.0 PHP: 5.3.6 MySQL: 5.5.9

A) Ich habe eigene programmierte Addons (News, Dates, etc) im Betrieb. Und nun will ich aus dem Frontend in einem Modal Bpopup über Ajax oder optional Iframe eine extra Datei die innerhalb meines Output Folders im Addon aufrufen, welche mir das entsprechende Datedetail aus der DB ausliest. Das Problem hier ist halt das alles was innerhalb von Includes liegt ja nicht von außen aufgerufen werden kann.

Ich rufe zbs folgendes in der Modal Ajax Funktion auf: redaxo/includes/addons/px_dates_addon/output/get_dates_detail_from_addon.php?id=12345
Das ergibt natürlich eine Forbidden...

B) Optional habe ich mir mal oberhalb von redaxo einen Ordner pxscripts gemacht und die Datei dort rein gelegt. pxscripts/get_dates_detail_from_addon.php?id=12345 Und naja hier funktioniert dann natürlich nicht das auslesen mit $sql = new rex_sql; da dies dort logischer Weise nicht existiert. Und eine eigene SQL abfrage will ich mir nicht bauen, weil ich dort dann auch Passwd, Host usw eintragen muss, was zwar nicht schlimm wäre aber hätte es doch lieber nur in der redaxo config stehen.

C) Alternativ könnte ich auch ein Modul schreiben, den INhalt oder die Datei die mir das Datesdetail ausliest reinsetzten bzw includen. Das Modul dann in eine xyz Seite im System einbinden und dann diese Seite via Ajax aufrufen.

OK lange Rede kurze Sinn... Gibt es unkopmlizierte Lösungen für Punkt A) oder B)? Oder soll ich mir den ganzen Stress sparen und die c) Variante mit dem Modul machen was ich dann in eine Seite packe und diese Seite aufrufe? Dass das geht und mir mein Script dann über die ID das richtige Date Detail aufruft geht auf jeden fall... Aber Jo ich würde es auch gerne mal anders probieren.

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

9. Mai 2014, 11:31

hallo,

jetzt habe ich für meine Belange eine Lösung gefunden, die mir gefällt und natürlich funktioniert. Ich will mal kurz das Prinzip erklären.

Der Ausgangspunkt war der, dass ich in einem AddOn 4 unterschiedliche Ajax-Aufrufe mit JQuery machen will.

Der Ansatz mit den extention points hat mir nicht so richtig gefallen, weil ich lieber mit Klassen arbeite statt mit einzelnen Funktionen.

Also habe ich mir eine Klasse geschrieben mit den 4 Methoden und eine Methode, die die POST-Vars entgegen nimmt und die passende Methode aufruft.

Im output liegt eine Datei, die darauf zugreift. Dann habe ich einen Artikel angelegt mit einem Modul, das diese Datei included. Als url im Ajax-Aufruf übergebe ich mit rex_getUrl() die url an mein Javascript.

und voila es klappt
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

18. Jun 2014, 08:52

Hi Anita,

ich habe jetzt mal unterschiedliche Varianten probiert aber ich blicke es einfach nicht und komme nicht zum Ziel. Ich glaube das was ich habe ist noch einfacher als das was Du benötig hast, aber ich bekomme das einfach nicht auf die Reihe. Evtl kannst du mir da ja etwas helfen, das wäre super.

Ich will dieses Infinite-Scroll Script hier nutzen.
http://www.inserthtml.com/2013/01/scroll-pagination/
In dessen Javascript.js Datei müsste ich mein Script get.news.archiv.php aufrufen das in meinem Addon im Ordner output liegt. Meine get.news.archiv.php ließt mir entsprechend die DB Tabelle News aus, was auch wie gehabt bestens funktioniert, auf die herkömmliche art. Jedoch muss für das Infinite-Scroll hier der Query modifiziert werden und es muss das Offset und Postnumbers des Infinite integriert werden.

Code: Alles auswählen

$offset = is_numeric($_POST['offset']) ? $_POST['offset'] : die();
$postnumbers = is_numeric($_POST['number']) ? $_POST['number'] : die();

$query = 'SELECT * FROM '.$REX['TABLE_PREFIX'].'1001_nc_news WHERE status="'.intval(1).'" ORDER BY createdate DESC LIMIT '.$postnumbers.' OFFSET '.$offset.'';
Meine get.news.archiv.php include ich in einem Modul und dieses gebe ich in einem Artikel aus, so wie ich es immer mache um Modul Inhalte auszugeben. Ich habe nun in das Modul auch mal den kompletten Inhalt der javascript.js in ein <script>...</script> gepackt, und im $.Post auch den Link zur get.news.archiv.php rein gepackt, aber ohne erfolg. Ich bekomme einen 403.........

Ich könnte jetzt viel schreiben wie ich wo was probiert habe. Es wäre super wenn du etwas Zeit hast, dir das ganze evtl mal anzuschauen wie ich das Infinite-Scroll einsetzten könnten und mir ein Beispiel geben.

LG

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

18. Jun 2014, 11:42

hi PXDemon,

das schau ich mir heute Nachmittag mal an. Da muss ich mir ein Beispiel anlegen.

Wo liegt Deine get.news.archiv.php? wie lautet der Pfad dorthin in Deiner Javascript.js?
poste mal die get.news.archiv.php
was sagt die Fehlerkonsole?
schon mal Browsercache gelöscht?
werden die news angezeigt, wenn Du sie ohne Ajax ausliest?
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

18. Jun 2014, 17:33

Hi Anita,

super das du da mal nachschaust und ein Beispiel anlegst (y)

Meine get.news.archiv.php liegt in (localhost:8888/web-2014/redaxo/include/addons/nc_news/output/get-news-listing-archive.php)

Der Pfad in der javascript.js verwies auf (redaxo/include/addons/nc_news/output/get-news-listing-archive.php)

Normal habe ich alle JS und Jquery Script in dem Ordner.
(localhost:8888/web-2014/js/jquery/plugins/) Im Fall von Infinite Scroll lautet der Ordner innerhalb Plugins (infinite-scroll) also im gesamten so (localhost:8888/web-2014/js/jquery/plugins/infinite-scroll/)

ABER, beim rumexperimentieren habe ich testweise den (infinite-scroll) Ordner auch mal in (localhost:8888/web-2014/redaxo/include/addons/nc_news/jquery/infinite-scroll/) kopiert.

ABER klar, wäre mir natürlich der Ordnung und Richtigkeit halber lieber das ich den Ordner in meinem js/jquery/plugins Verzeichnis ablege.

Die Console sagte mir 403. Browser Cache schon öfters geleert.

Ohne die Angabe, also diese hier

Code: Alles auswählen

$offset = is_numeric($_POST['offset']) ? $_POST['offset'] : die();
$postnumbers = is_numeric($_POST['number']) ? $_POST['number'] : die();

$query = 'SELECT * FROM '.$REX['TABLE_PREFIX'].'1001_nc_news WHERE status="'.intval(1).'" ORDER BY createdate DESC LIMIT '.$postnumbers.' OFFSET '.$offset.'';
funktioniert das auslesen der News super.

Der Query lautet ohne die obige Angabe natürlich so.

Code: Alles auswählen

$setLimit ='20';
$query = 'SELECT * FROM '.$REX['TABLE_PREFIX'].'1001_nc_news WHERE status="'.intval(1).'" ORDER BY createdate DESC LIMIT '.$setLimit.'';
Die get.news.archiv.php findest du auf der nächsten Seite.....
Zuletzt geändert von PXDemon am 18. Jun 2014, 17:42, insgesamt 4-mal geändert.

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

18. Jun 2014, 17:35

Hier mal noch meine get.news.archive.php

Code: Alles auswählen

<?
############################################################################
### SET IMAGE FOLDER #######################################################
############################################################################
$imagefolder ='nc_news';

############################################################################
### SEO42 CONTROL URL ARTIKEL DETAIL #######################################
############################################################################
$getNewsId = url_generate::getId('rex_1001_nc_news');

############################################################################
### SET THE LIMIT ##########################################################
############################################################################
$setLimit ='20';


//$offset = is_numeric($_POST['offset']) ? $_POST['offset'] : die();
//$postnumbers = is_numeric($_POST['number']) ? $_POST['number'] : die();

############################################################################
### REQEST ON DATABASE #####################################################
### Docu: http://www.redaxo.org/de/wiki/index.php?n=R4.REXSQLBeispiele #####
############################################################################

$sql = new rex_sql;
$query = 'SELECT * FROM '.$REX['TABLE_PREFIX'].'1001_nc_news WHERE status="'.intval(1).'" ORDER BY createdate DESC LIMIT '.$setLimit.'';

//$query = 'SELECT * FROM '.$REX['TABLE_PREFIX'].'1001_nc_news WHERE status="'.intval(1).'" ORDER BY createdate DESC LIMIT '.$postnumbers.' OFFSET '.$offset.'';

$sql->setQuery($query);
###########################################################################
### DEBUG ARRAY IF NEEDED #################################################
###########################################################################
//print_r($query);
//print_r($sql);

###########################################################################
### GET QUERY FROM DATABASE ###############################################
###########################################################################
if ($sql->getRows()){

	for ($i=0; $i<$sql->getRows(); $i++) {
	###################################################################
	### ADD VALUES FROM DATABASE TO VARS ##############################
	###################################################################
	$id = $sql->getValue('id');
	$createdate = $sql->getValue('createdate');
	$title = $sql->getValue('title');
	$content = $sql->getValue('content');
	$source = $sql->getValue('source');
	$image = $sql->getValue('image');
	$video1 = $sql->getValue('video1');
	$video2 = $sql->getValue('video2');
	$video3 = $sql->getValue('video3');
	$video4 = $sql->getValue('video4');
	$video5 = $sql->getValue('video5');
	$editor = $sql->getValue('editor');

	###################################################################
	### TITEL KUERZEN #################################################
	###################################################################
	$title = substr($title, 0, 50);
	$title = $title.'...';

	###################################################################
	### CONTENT KUERZEN UND NACH LINKS SUCHEN NICHT KLICKBAR MACHEN ###
	###################################################################
	$content = strip_tags($content);
	$content = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $content);
	$content = substr($content, 0, 500);
	$content = $content.'...';

	###################################################################
	### DATUM DES ARTIKELS IN EINZELTEILE ZERLEGEN ####################
	###################################################################
	$createDay = date( 'dS', strtotime($createdate)); //Tag+(S)englischen Aufzaehlung
	$createMonth = date( 'M', strtotime($createdate)); //Monatsname mit drei Buchstaben
	$createYear = date( 'y', strtotime($createdate)); //Jahreszahl, zweistellig

	###################################################################
	### SEO42 CONTROL URL MUSS INSTALLIERT SEIN...#####################
	###################################################################
	//$news_id = url_generate::getId('rex_1001_nc_news'); // Wird nur fuer die Artikel Deatil ausgabe verwendet
	$article_url = url_generate::getUrlById('rex_1001_nc_news', $id); // Artikel URL ermitteln

	###################################################################
	### START PRINT LISTING OUTPUT ####################################
	###################################################################
	print '<!-- START NEWS ITEM -->';
    print '<div class="grid-33 mobile-grid-100 tablet-grid-50 minidesktop-grid-33 smalldesktop-grid-33 mediumdesktop-grid-33 tooltip" title="CONTINUE READING">';
    	
        print '<div class="px-grid-content px-news-archive-item grid-parent" style="overflow:hidden;">';
        	
	        print '<div style="height:150px; padding-bottom:15px; overflow:hidden;">';
	            print '<div class="grid-45 mobile-grid-45 tablet-grid-45 minidesktop-grid-45 smalldesktop-grid-45 mediumdesktop-grid-45 px-no-lr-padding">';
	                //print '<div class="px-news-archive-item-image px-imghover">';
	                print '<div class="px-news-archive-item-image">';
	                    print '<a href="'.$article_url.'">';
	                    if($image !=''){
							print '<img src="files/'.$imagefolder.'/'.$image.'" width="100%" alt="'.$title.'" class="px-rounded">';
						}else{
							print '<img src="design/no-image-news.jpg" width="100%" alt="'.$title.'" class="px-rounded">';
						}
	                    print '</a>';
	                print '</div>';
	            print '</div>';
	            print '<h2><a href="'.$article_url.'">'.$title.'</a></h2>';
	            print '<a href="'.$article_url.'" class="disableHover">';
	            print '<span class="px-news-archive-date-item"><span class="px-news-archive-date-item-day">'.$createDay.'</span> '.$createMonth.' '.$createYear.'</span>';
	           	print $content;
	           	print '</a>';
	            //print ' <span class="px-news-archive-btn-more"><a href="'.$article_url.'">CONTINUE READING</a></span>';
	        print '</div>';
        print '</div>';

    print '</div>';
    print '<!-- END NEWS ITEM -->';
	##################################################################
	### ENDE PRINT LISTING OUTPUT ####################################
	##################################################################
	$sql->next();	
	}

}else{	
	##################################################################
	### SHOW ERROR BOX ID NOTHING FOUND ##############################
	##################################################################
	include $REX['HTDOCS_PATH'].'/templates/snip.error.box.php';
}
?>

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

19. Jun 2014, 13:55

super das du da mal nachschaust und ein Beispiel anlegst (y)
naja mit dem Beispiel hab ich mich wohl ein bisschen weit aus dem Fenster gelehnt, das ist ganz schön zeitaufwändig, aber mal sehen.
Meine get.news.archiv.php liegt in (localhost:8888/web-2014/redaxo/include/addons/nc_news/output/get-news-listing-archive.php)


Der Pfad in der javascript.js verwies auf (redaxo/include/addons/nc_news/output/get-news-listing-archive.php)
und genau hier liegt der Hase im Pfeffer, das geht nämlich nicht.

Lösung:

ein Modul anlegen, get-news-listing-archive.php includieren

einen Artikel (Ajaxcall) anlegen, Block hinzufügen mit ebendiesem Modul

in der javascript.js in der function getData() :

var ajaxurl = "<?php echo rex_getUrl(*** hier die Artikel-Id des Artikels Ajaxcall***); ?>";

$.post(ajaxurl , ....

probier mal
Normal habe ich alle JS und Jquery Script in dem Ordner.
(localhost:8888/web-2014/js/jquery/plugins/) Im Fall von Infinite Scroll lautet der Ordner innerhalb Plugins (infinite-scroll) also im gesamten so (localhost:8888/web-2014/js/jquery/plugins/infinite-scroll/)

ABER, beim rumexperimentieren habe ich testweise den (infinite-scroll) Ordner auch mal in (localhost:8888/web-2014/redaxo/include/addons/nc_news/jquery/infinite-scroll/) kopiert.

ABER klar, wäre mir natürlich der Ordnung und Richtigkeit halber lieber das ich den Ordner in meinem js/jquery/plugins Verzeichnis ablege.
was hindert Dich daran, das zu tun?
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

21. Jun 2014, 09:54

Hallo Anita,

Danke für dein Feedback und Lösungsansatz. Ich hab das jetzt mal entsprechend so gemacht, was mir auch logisch erscheint wie Du es beschrieben hast. Nur das mit dem rex_getURL und der ID des Artikels hat nicht funktioniert. Hier habe ich jetzt mal die Seite direkt angesprochen. (./reviews/ajaxcall.html)

Ich bin einen Schritt weiter aber funktionieren tuts noch nicht. Die javascript.js gibt mir jetzt aus "No More Posts!". Das tut es wenn normalerweise keine Posts mehr vorliegen, als Error Meldung. Aber er zeigt mir quasi gar keine Posts. Was mir sagt das er die get-reviews-listing-archiv.php nicht zieht. Ich hab es auch einfach mal mit der im Plugin vorhandenen ajax.php probiert die ich testweise in den Addonordner gelegt habe, aber da passiert das selbe. Die JS Datei liegt natürlich außerhalb von include, da ich sie sonst ja nicht im Template einbinden/aufrufen kann.

Im Template habe ich also.

Code: Alles auswählen

<script type="text/javascript" src="./js/jquery/plugins/infinite-scroll/javascript.js"></script>
und unten im Document Ready natürlich den Auruf.

Code: Alles auswählen

$('.infinite-scroll-wrapper').scrollPagination({.......
Im Modul (Test Load Ajax) habe ich die "get-reviews-listing-archiv.php" includiert. Und das Modul in einen Artikel in der Kategorie "reviews" gepackt.

Im "./js/jquery/plugins/infinite-scroll/javascript.js" habe ich wie oben geschrieben in "$.post('./reviews/ajaxcall.html', {...." die Seite direkt aufgerufen, da es mit (var ajaxurl = "<?php echo rex_getUrl(8); ?>";) leider nicht funktioniert hat.

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

21. Jun 2014, 16:07

hallo,

achja stimmt, die js-Datei liegt ja in einem anderen Verzeichnis. dann müssen wir das anders machen

also das kann auch nicht gehen

./reviews/ajaxcall.html - schreib mal stattdessen den kompletten Pfad in die javascript.js
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

21. Jun 2014, 16:28

Hm, ja das hatte ich schon probiert mit (http://localhost:8888/web-2014/reviews/ajaxcall.html). Komme aber leider zum selben Ergebnis :-/

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: PHP-script mit Ajax aufrufen

21. Jun 2014, 16:59

tjaaaa,

probier doch mal, was passiert, wenn Du den Javascript-Code direkt in den Artikel schreibst und dann mit var ajaxurl und dann mit <?php echo rex_getUrl(...); ?> arbeitest.

Andererseits könnte es vielleicht in Deinem Fall mit Extention Points gehen, da Du ja nur eine Funktion hast.
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: PHP-script mit Ajax aufrufen

21. Jun 2014, 20:29

Du hast REDAXO in nem Unterordner installiert. Es ist gut möglich das deine Ajax-Url nicht stimmt weil der Unterordner da nicht vorkommt.

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: PHP-script mit Ajax aufrufen

22. Jun 2014, 08:09

Das JS direkt in den Ajaxartikel zu packen und mit rex_getUrl(8) zuarbeiten hab ich schon versucht, gab das selbe Ergebnis.

Hm, mit Extentionpoints habe ich bisher noch nie gearbeitet, was machen die und wie nutzt man sie in diesem Fall?

Noch was anderes. Ich habe dem Ajax Artikel ein leeres Templates verpasst, war das soweit richtig?

Eine andere Lösung wäre halt noch das ich die Datei die das Artikelarchiv ausliest in einen Ordner außer halb von Include bzw Redaxo lege, diese Datei wie gewohnt in einem Modul includen und die Daten in der Datei normal mit MYSQL auslese. NUR ein Problem hätte ich dann dort dennoch. Das SEO42 URL CONTROL würde dort nicht funktionieren. Was ich aber auf den Links (Headlines) der Teaser Artikel benötige. Oder gibt es da eine Möglichkeit?

Oder wäre es möglich in der htaccess Datei die im Include liegt eine Außnahme einzubauen das ich auf den Ordner redaxo/include/addons/nc_reviews/output von außen drauf zugreifen kann? Ich denke dann wäre das ganze Problem auf einmal gelöst.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: PHP-script mit Ajax aufrufen

22. Jun 2014, 08:40

Ist vom alten Markitup Addon:

Code: Alles auswählen

Satisfy any
Order Deny,Allow
Allow from all
Was stimmte nicht mit dem Lösungsweg den ich dir vorgeschlagen habe?

Zurück zu „Allgemeines [R4]“