AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi AJAX Content auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

AJAX Content auslesen

Ein Thema von lowF · begonnen am 26. Feb 2009 · letzter Beitrag vom 27. Feb 2009
Antwort Antwort
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#1

AJAX Content auslesen

  Alt 26. Feb 2009, 20:51
Hi Leute der DP!

Habe ziemliche Probleme, mich mit Websites mit AJAX zurechtzufinden, zumal ich davon überhaupt keine Ahnung habe.

Problem sieht so aus:

Ich gehe auf eine Website, poste dort etwas ins Formular und AJAX ändert den innerHTML von einem Div-Container(Oder so). AJAX schreibt per GetElementByID.innerHTML = sonstwas.

Frage ist, wie komme ich an "sonstwas"? Im Quelltext der Seite steht es ja leider nicht drin.

Oder irre ich mich da?

MfG
lowF
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 20:54
Direkt steht er nicht drinnen, das ist richtig.

Meinst du sowas oder wie?

Code:
// Inhalt setzen
document.GetElementById('foo').innerHTML = 'blubb';

// Inhalt auslesen
var content = document.GetElementById('foo').innerHTML;
alert(content);
Das wäre normales JavaScript und kein AJAX.

Edit: Ach ich Depp, das ist eine Delphi-Frage oder? Dann ist meine Antwort natürlich völlig daneben.

Grüße, Matze
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#3

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 20:57
Sorry hatte da nicht richtig hingeschaut.

So siehts aus:

Code:
document.getElementById('DIE ID').innerHTML = myajax.responseText;
Vorher wurden noch ein paar functions von myajax aufgerufen.

MfG
lowF

[edit=mkinzler]Quellcode getaggt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#4

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 21:02
Wenn du uns mal alles was mit myajax davor gemacht wurde, schicken kannst, können wir dir sicher sagen woher er die Daten bezieht. Denn auch ein XHR muss eine Datenquelle angegeben haben. Und da meine Vermutung ist das myajax einfach eine XHR Kapselung ist, sollte es kein Problem sein, die Quelle da rauszufischen.

Achja und das übliche "Ist das denn auch vom Betreiber der Seite so gewünscht und rechtlich stichhaltig (Agb)"
Frederic H.
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#5

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 21:15
Okay ich versuchs mal zusammenzufassen. Da ich ja kaum Ahnung habe, einfach sagen, wenn euch was fehlt!

Delphi-Quellcode:
var ajaxpack = new Object()
ajaxpack.basedomain = "http://"+window.location.hostname
ajaxpack.ajaxobj = createAjaxObj()
ajaxpack.filetype = "txt"
und hier die function, von der ich glaube, dass da was passiert
Delphi-Quellcode:
ajaxpack.postAjaxRequest=function(Text, parameters, callbackfunc, filetype)
if(this.ajaxobj) {
    this.filetype = filetype;
    this.ajaxobj.onreadystatechange = callbackfunc;
    this.ajaxobj.open('POST', Text, true);
    this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    this.ajaxobj.setRequestHeader("Content-length", parameters.length);
    this.ajaxobj.setRequestHeader("Connection", "close");
    this.ajaxobj.send(parameters);
Wird hier aufgerufen:
ajaxpack.postAjaxRequest("index_p/", createpoststring(), processGetPost, "txt"); CreatePostString erstellt einfach nur den String für die Funktion.

MfG
lowF

Edit: Keine AGB auf der Website angegeben!
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#6

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 21:21
Das können an und für sich nicht dir richtigen Stellen sein, das sieht mir nämlich mehr nach einem HTTP-POST für ein Formular/eigene Daten aus, als das Herunterladen von Daten. Kannst du uns nicht die komplette URL der Seite geben, dann guck ich eben. Sollte keine große Sache sein.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 21:22
Meist bezieht AJAX die Daten in XML-Form. Du musst eigentlich nur herausfinden, welche URL das AJAX-Skript aufruft und welche Parameter es wie (POST/GET) hinsendet. Das kannst du per Indy ebenfalls (IdHTTP.Post(), IdHTTP.Get())und erhälst die Daten und kannst sie verarbeiten.

Bevor du das aber machst, frage den Betreiber, ob du es auch darfst. Wenn durch deinen verursachten Traffic obendrein Mehrkosten entstehen, kann das für dich teuer werden.

Grüße, Matze
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#8

Re: AJAX Content auslesen

  Alt 26. Feb 2009, 21:27
Okay hier mal der gesamte Quellcode.

Delphi-Quellcode:
//create request object called httprequest
function createAjaxObj() {
  var httprequest = false;
  if (window.XMLHttpRequest) { // if Mozilla, Safari etc
    httprequest = new XMLHttpRequest();
    if (httprequest.overrideMimeType) httprequest.overrideMimeType('text/xml');
  }

  else if (window.ActiveXObject) { // if IE
    try {
      httprequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
 
    catch (e){
      try{
        httprequest = new ActiveXObject("Microsoft.XMLHTTP");
      }

      catch (e){}
    }
  }
  return httprequest;
}

//http://www.dynamicdrive.com/dynamicindex17/ajaxroutine.htm
//ACCESSIBLE VARIABLES (for use within your callback functions):
//1) ajaxpack.ajaxobj //points to the current ajax object
//2) ajaxpack.filetype //The expected file type of the external file ("txt" or "xml")
//3) ajaxpack.basedomain //The root domain executing this ajax script, taking into account the possible "www" prefix.
//4) ajaxpack.addrandomnumber //Set to 0 or 1. When set to 1, a random number will be added to the end of the query string of GET requests to bust file caching of the external file in IE. See docs for more info.

//ACCESSIBLE FUNCTIONS:
//1) ajaxpack.getAjaxRequest(url, parameters, callbackfunc, filetype)
//2) ajaxpack.postAjaxRequest(url, parameters, callbackfunc, filetype)


var ajaxpack = new Object()
ajaxpack.basedomain = "http://"+window.location.hostname
ajaxpack.ajaxobj = createAjaxObj()
ajaxpack.filetype = "txt"
ajaxpack.addrandomnumber = 0 //Set to 1 or 0. See documentation.

ajaxpack.getAjaxRequest = function(txt1, parameters, callbackfunc, filetype) {
  ajaxpack.ajaxobj = createAjaxObj() //recreate ajax object to defeat cache problem in IE
  if(ajaxpack.addrandomnumber==1) //Further defeat caching problem in IE?
  var parameters=parameters+"&ajaxcachebust="+new Date().getTime();
  if(this.ajaxobj) {
    this.filetype = filetype;
    this.ajaxobj.onreadystatechange = callbackfunc;
    this.ajaxobj.open('GET', txt1+"?"+parameters, true);
    this.ajaxobj.send(null);
  }

}

ajaxpack.postAjaxRequest=function(txt1, parameters, callbackfunc, filetype) {
  ajaxpack.ajaxobj = createAjaxObj() //recreate ajax object to defeat cache problem in IE
  if(this.ajaxobj) {
    this.filetype = filetype;
    this.ajaxobj.onreadystatechange = callbackfunc;
    this.ajaxobj.open('POST', txt1, true);
    this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    this.ajaxobj.setRequestHeader("Content-length", parameters.length);
    this.ajaxobj.setRequestHeader("Connection", "close");
    this.ajaxobj.send(parameters);
  }

}

function processGetPost(){
  var myajax = ajaxpack.ajaxobj;
  var myfiletype = ajaxpack.filetype;
  if(download_loading_count > 41) {}

  else {
    if (myajax.readyState == 4){ //if request of file completed
      if (myajax.status==200 || window.location.href.indexOf("http")==-1){ //if request was successful or running script locally
        if (myfiletype=="txt") {
          document.getElementById('download_details').style.display = 'block';
          hideDownloadsLoading();
          document.getElementById('download_details').innerHTML = myajax.responseText;
        }

        else {
          alert(myajax.responseXML);
        }

      }
    }
  }
}

function createpoststring() {
    var url_value = document.getElementById("chooser_form").txt1.value;
    var poststr = "url=" + escape(url_value);
  return poststr;
}


var download_loading_int = false;
var download_loading_count = 0;
var selected_form = 0;
var history_value = '';

//main function
function openDownloads() {
  url_value = document.chooser_form.txt1.value;
  if(url_value == "")
    {alert('Please enter a URL first.');document.forms[selected_form_name].txt1.focus();}

  else {
document.getElementById('download_container').style.display = 'block';
document.getElementById('download_details').style.display = 'none';
document.getElementById('download_loading').style.display = 'inline';
document.getElementById('download_loading_c').innerHTML = '';
    if(download_loading_int) {
      clearInterval(download_loading_int);
    }

    download_loading_count = 0;
    
   ajaxpack.postAjaxRequest("index_p/", createpoststring(), processGetPost, "txt");
    download_loading_int = setInterval('if(download_loading_count == 40){hideDownloadsLoading();document.getElementById(\'download_details\').style.display = \'block\';document.getElementById(\'download_details\').innerHTML = \'Error: Timeout. Please try again.\';}download_loading_count++;document.getElementById(\'download_loading_c\').innerHTML += "."', 2000);

  }
}

function hideDownloadsLoading() {
  if(download_loading_int) {
    clearInterval(download_loading_int);
  }

  document.getElementById('download_loading').style.display = 'none';
}

function htmlspecialchars(str){
    return str.replace(/&/g, "&").replace(/</g,"<").replace(/>/g, ">").replace(/'/g, "'").replace(/"/g, """);
}
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#9

Re: AJAX Content auslesen

  Alt 27. Feb 2009, 14:42
Gibt es vielleicht eine einfachere Methode, den HTMLText auszulesen, ohne sich durch das AJAX-Kram zu wühlen? Der Browser stellt es ja immer hin dar.
  Mit Zitat antworten Zitat
lowF

Registriert seit: 18. Dez 2008
37 Beiträge
 
#10

Re: AJAX Content auslesen

  Alt 27. Feb 2009, 16:20
Okay ich habe jetzt herausgefunden, wo sich AJAX das Zeug herholt (Einfach mal das ganze über nen idHTTPProxy laufen lassen und mir alles in ein Memo schreiben lassen). Dadurch konnte ich auch auf den Content zugreifen.

Danke für eure Mühe!

lowF
  Mit Zitat antworten Zitat
Antwort Antwort


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 are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz