Antwort
 
Themen-Optionen Thema durchsuchen
Alt 07.03.2007, 13:17 Nach oben    #1
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard Ajax Probleme

Halli Hallo Hallöle!

Ich hab da ein Ajax / JS Problem mit folgender function:

PHP-Code:
function AjaxLoaderGeturl)
{
    var 
alObj checkXMLHttpRequestObj(alObj);
    if(
alObj == null) return false;
    
alObj.open('GET'url);
    
alObj.onreadystatechange = function () {
        if (
alObj.readyState == 4) {
            
//addDebug(alObj.responseText);
            
document.getElementById(e).innerHTML alObj.responseText;
        }
    };
    
alObj.send(null);

Dies funktioniert soweit alles wunderbar. Nur würd ich gern den responsetext zurückgeben.

also eine neue Funktion, die genauso aufgebaut ist wie obige, nur anstatt:

document.getElementById(e).innerHTML = alObj.responseText;

einfach das ganze "returnen" lassen. Aber wenn ich nun:

return alObj.responseText;

schreib, bekomm ich nichts zurück.


Habt ihr da ne Idee?


LG

Marcel
Angehängte Dateien
Dateityp: rar AjaxObject.rar (661 Bytes, 2x aufgerufen)
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 14:32 Nach oben    #2
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

das problem ist folgendes: du rufst zunächst die funktion AjaxLoaderGet auf, die dann ein XMLHttpRequest erzeugt. Und diesem Request-Object wird eine methode onreadystatechange zugweisen. Danach wird das request abgesendet und die funktion ist beendet.
Sobald ein response eintrifft, wird dann quasi in einem anderen thread die onreadystatechange-funktion ausgeführt. Sie kann dann aber keinen Rückgabewert für AjaxLoaderGet mehr erzeugen, weil diese Funktion ja schon beendet ist.
durch ein bischen tricksen und ein synchrones request könnte man aber auch die AjaxLoaderGet-funktion den empfangenen response zurückgeben.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 14:56 Nach oben    #3
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

Problem: synchroner Request impossible, da Programm sonst ned läuft so wie es geplant und schon PHP-seitig Programmiert ist.

Selbst "erdachte" Möglichkeit:

Könnte ich einen <div> Container verwenden in den ich speichere und nach dem speichern wieder ausles?

Praktisch ein

<div id="cache"></div>

speichern ganz normal...

document.getElementById('cache').innerHTML = alObj.responseText;

und auslesen mit:

var cache = document.getElementById('cache').innerHTML;
document.getElementById('cache').innerHTML = '';


1. geht das überhaupt so?
2. Seht ihr (du) da Probleme die ich als "anfänger" in Sachen Ajax & JS nicht seh?


LG

Marcel


PS: Danke für deine Ausführliche Anwort

[EDIT]

Ich habs nun Probiert, er sagt aber das er hier in der "getCache()"-Function

-> return cache;

ein Objekt erwartet. o_O

Was mach ich denn da falsch?



PHP-Code:
/***********************************************************************************
Action: Cacher
************************************************************************************/
function setCachecontent )
{
    
document.getElementById('cache').innerHTML content;
}
function 
getCache()
{
    var 
cache 'empty';
    
cache document.getElementById('cache').innerHTML;
    
document.getElementById('cache').innerHTML '';
    return 
cache;
}

function 
AjaxLoaderCacheurl )
{
    var 
alObj checkXMLHttpRequestObj(alObj);
    if(
alObj == null) return false;
    
alObj.open('GET'urltrue);
    
alObj.onreadystatechange = function () {
        if (
alObj.readyState == 4) {
            
setCachealObj.responseText );
        }
    };
    
alObj.send(null);
}

function 
getMailyqrbkdn )
{
    
AjaxLoaderCache'test.php?action=getMail&y='+y+'&q='+q+'&rb_kdn='+rbkdn );
    var 
rbRechnung window.open("""showmail"+rbkfn"menubar=no,location=no,resizeable=no,innerWidth=650,innerHeight=600");
    
rbRechnung.document.writegetCache() );

[/EDIT]

Geändert von Julied64 (07.03.2007 um 15:40 Uhr)
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 15:53 Nach oben    #4
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

du kannst den response auch einfach in ner globalen variable "cachen". dafür brauchst du kein div.
javascript Code:
  1. var cache = false;
  2. function setCache( content )
  3. {
  4.     cache = content;
  5. }
  6. function getCache()
  7. {
  8.     return cache;
  9. }
wobei du dir dabei auch eigentlich die funktionen sparen kannst...^^
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 16:11 Nach oben    #5
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

omg xD *loooool*

Ok, btw. des mim Div hat auch gefunzt. Aber, da nehm ich doch lieber die locale cacheVar xD *muhaha*

Dankö dir *g*


LG


Marcel
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 16:54 Nach oben    #6
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

Nun hät ich gleich noch ne Frage.

Ich mach ja wie oben gezeigt ein Fenster auf. in dem Fenster hab ich einen PrintButton:

<button id="printerButton" onClick="javascript:self.print();">Drucken</button>


Er mag aber ned drucken, warum?
Hab auch schon window.print() probiert...mit semikolon und ohne....mir javascript: und ohne...nix geht
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 17:54 Nach oben    #7
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

bei nem onclick musst du das protokoll (javascript weglassen, das braucht man nur bei links.
HTML-Code:
<button id="printerButton" onClick="window.print();">Drucken</button> 
das sollte eigentlich so funktionieren...
mit welchem browser hast du das getestet?
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 18:06 Nach oben    #8
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Seltsame Syntax
html Code:
  1. <input type="button" value="Drucken" onclick="javascript:self.print();">
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 18:15 Nach oben    #9
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

So. Nu hab ichs auch mit input probiert. ohne das javascript: hab ich es schon probiert, siehe vorherigen Post from myself...

Ich öffne Das window ja mit JS. also:

fenster = window.open(.........);

und

fenster.print();

geht auch ned obwohl

fenster.print == true

ergibt -.-


getestet mit IE 6 und...mom....
hmm...
mit dem FF gehts

Jetzt bin ich verwirrt


LG

Marcel
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 18:35 Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Poste mal Link... Vermutlich ist das ein anderes Problem. Der von mir gepostete Code funktioniert bei mir in Safari, Netscape, Opera und Firefox
//EDIT: Mit dem IE for Mac (Version 5.2 ) funktioniert es nicht.
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 18:44 Nach oben    #11
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

Ähm, Link geht schlecht. Dazu müsst ich dir LoginDaten geben. Und dies kann ich nicht machen, da es ein Firmenbackend ist. Dazu verbietet es mir allein schon das BDSG xD Würd ich gern machen, da es sicher zum zur Aufklärung dienen würde.

Kann dir aber jeglichen "TeilCode" geben den du brauchst. Den größten Teil des JS Codes hab ich oben gepostet. Ich posts aber nun nochmal:

PHP-Code:
function AjaxLoaderCacheurl )
{
    var 
alObj checkXMLHttpRequestObj(alObj);
    if(
alObj == null) return false;
    
alObj.open('GET'url );
    
alObj.onreadystatechange = function () {
        if (
alObj.readyState == 4) {
            
setCachealObj.responseText );
        }
    };
    
alObj.send(null);
}



function 
printMailyqrbkdn )
{
    
AjaxLoaderCache'test.php?action=getMail&y='+y+'&q='+q+'&rb_kdn='+rbkdn );
    var 
rbRechnung window.open("""showmail"+rbkdn"menubar=no,location=no,resizeable=no,width=700,height=600,scrollbars=yes");
    
rbRechnung.document.writegetCache() );
    
rbRechnung.name 'Rechnung für Reisebuero mit der Nummer: '+rbkdn;
    if( 
rbRechnung.print )
    {
        
rbRechnung.print();
        
alert('Rechnung müsste gedruckt werden...!');
    }
    else
    {
        
alert'Kann DruckFunktion nicht automatisieren!' );
    }


Also...mir gehts nun eigentlich nur noch um das JS-seitige drucken. Sprich das "automatische" drucken.


LG

Marcel
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 18:58 Nach oben    #12
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zwei Beiträge wurden aufgrund von Spam gelöscht.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 19:05 Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Hm... wirklich seltsam. Ich habe gerade keine Lust mein virtuelles Windows zu starten. Aber vielleicht kannst du es mal testen: Versuch mal auf http://de.silberperle.org/ die Druckfunktion (Bild unten) mit dem IE.
Ach ja: Ich will keinen Kommentar zur Seite
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 20:00 Nach oben    #14
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

Ähm, Bleistift, die geht. o_O

kapier ich ned -.-


LG

Marcel

Geändert von Ben (07.03.2007 um 20:06 Uhr) Grund: Spam entfernt.
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.03.2007, 22:33 Nach oben    #15
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 428
Standard

auf siberperle.de ist es ein Link, bei dir n Button. vll mag der IE bei einem Button nicht drucken... Da ich kein IE benutze (gründe gibt es genügend im netz) kann ich es nicht ausprobieren. (ich hab den garnicht mehr)
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.03.2007, 14:14 Nach oben    #16
Benutzer
 
Registriert seit: 02.09.2005
Beiträge: 68
Standard

Also. Ums abzuschließen. Es geht ned, warum auch immer. Ich setz die Funktion print() regulär ein. ich habs in jeglichen versionen, self.print(), window...., print() allein usw. probiert. Auch fenster = window.open(...) und dann fenster.print() geht nicht. obwohl fenster.print true ergibt -.-

Naja...So What...

LG

Marcel
Julied64 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.03.2007, 17:23 Nach oben    #17
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

Zitat:
Zitat von Julied64 Beitrag anzeigen
fenster.print == true
ähm als is mir jetzt erst aufgefallen: müsste fenster.print net eine funktion sein, also fenster.print == "function(){}" oder so??
ich weiß aber net wie der ie das macht...

EDIT:
also document.write(window.print); gibt bei mir "function print() { [native code] }" und nicht true...
__________________
Weißt Bescheid - Scheiß wie weit

Geändert von $traight-$hoota (09.03.2007 um 17:26 Uhr)
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Strato / Arcor? MrNiceGuy Plauderecke 15 28.12.2006 23:35
[AJAX] Eine Einführung in AJAX und XMLHttpRequest Jay Tutorials 1 08.12.2006 16:21
Ajax für Terminübersicht / Onlineuser mano JavaScript und AJAX 23 05.12.2006 18:05
Unterschiede JavaScript und AJAX ibs Sonstige Programmiersprachen 13 13.04.2006 07:41
AJAX Theme Engine für Wordpress PaterNoster Plauderecke 0 17.11.2005 21:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45