Just nu i M3-nätverket
Gå till innehåll

Få in <script> resultat i PHP variabel.


mindsleep

Rekommendera Poster

Kör en widget på en sida som ser ut ungefär så här:

<script type="text/javascript" src="http://www.test.com/widget.aspx"></script>

 

Sidan verkar skicka ut ett "document.write()".

 

Kör man sidan så skrivs en tabell ut. Men nu skulle jag vilja behandla tabellen lite innan den skrivs ut med hjälp av document.write(). Jag vill ha in resultatdatan in i en PHP variabel.

 

Har för mig att jag gjort det tidigare...men minns inte hur.

 

OBSERVERA: Jag vet att <script> aktiveras från klient och PHP via servern. Men jag hoppas att jag på något sätt ändå kan manipulera datan på något sätt. Kanske via Javascript eller på något sätt.

Länk till kommentar
Dela på andra webbplatser

Testa med file_get_content:

$data = file_get_contents('[color=#1C2837][size=2]http://www.test.com/widget.aspx[/size][/color]');

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

För att få den i php måste du göra ett anrop till webbservern, alltså en GET- eller POST-request. Antingen kan du använda AJAX, eller för GET göra en redirect:

 

window.location.href = 'nyurl.php?var1=' + escape(javaskriptdata) + '&var2=' + escape(javaskriptdata);

 

Eller för att göra en POST så gör du ett formulär som du fyller med javaskriptdata och submittar med javaskript: self.document.forms[0].submit();

Länk till kommentar
Dela på andra webbplatser

För att få den i php måste du göra ett anrop till webbservern, alltså en GET- eller POST-request. Antingen kan du använda AJAX, eller för GET göra en redirect:

 

window.location.href = 'nyurl.php?var1=' + escape(javaskriptdata) + '&var2=' + escape(javaskriptdata);

 

Eller för att göra en POST så gör du ett formulär som du fyller med javaskriptdata och submittar med javaskript: self.document.forms[0].submit();

 

Hänger inte riktigt med här. Förstår inte riktigt hur en GET eller POST ska kunna hjälpa mig i detta problem.

Länk till kommentar
Dela på andra webbplatser

Tack för svaren. Men inget som hjälpte mig.

 

Problemet med:

<script type="text/javascript" src="http://www.test.com/widget.aspx"></script>

 

Är att inget skrivs ut på själva sidan så jag kan inte göra exemeplvis getElementById eller nåt dylikt sådant.

 

Jag glömde att poängtera att det är inte min widget. Så jag visste inte egentligen vad som skickades ut.

 

Har nu lyckats få fram datan som skickas ut på widget.aspx sidan i och med att spara sidan i Forefox.

 

Det som skickas från widget.aspx ser ut ungefär som:

document.write('document.write('<table style="padding:0;margin:0;border:1px solid #dfdfdf;border-collapse:collapse;width:100%;" cellspacing="0" summary="Tabelldata"> <thead> <tr> <td style="font-family:Verdana, Helvetica, sans-serif;font-size:11px;line-height:15px;background-color:#233446;border:1px solid #dfdfdf;color:#ffffff;font-weight:bold;padding:2px 5px;vertical-align:top;" colspan="2">Nästa</td>'...osv);

 

Vad jag skulle vilja göra är söka reda på en sträng som finns i tabellen...typ: Alla strängar som heter "år" vill jag göra bold.

 

Det hade inte varit så stora problem om <table style....osv faktiskt skrivits ut på min anropande sida. Men det gör den ju inte eftersom widget skaparen har använt document.write.

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Du måste använda GET eller POST för att få information från javaskript till php. Det kan du göra på två sätt, antingen genom att instruera webbläsaren att gå till en annan sida och ta med sig javaskriptdatat dit. I princip en redirect. Eller så kan du använda AJAX, dvs att javaskriptet utför GET/POST och får tillbaka datat (från ditt php-skript) som det sedan visar på samma sida.

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Det är alltså i widget.aspx du behöver lägga in requesten. Är problemet att du inte har tillgång till widget.aspx?

Länk till kommentar
Dela på andra webbplatser

Det är alltså i widget.aspx du behöver lägga in requesten. Är problemet att du inte har tillgång till widget.aspx?

 

Ja, jag har inte tillgång till widget.aspx. Den är dold för mig. Det är en extern widget tjänst som jag kör. Men jag vill förändra datan som finns i widgeten.

Länk till kommentar
Dela på andra webbplatser

Vidare så har jag testat följande kod:

 

<script type="text/javascript" src="http://www.test.com/widget.aspx"></script>

 

<script type="text/javascript">

var table = document.getElementsByTagName("table");

var val=table[0].innerHTML.toLowerCase();

document.write(val);

</script>

 

Det verkar fungera. Jag får verkligen ut tabelldatan. Men inte själva källkoden. Jag behöver förhindra att tabellen skrivs ut på sidan. Jag vill ha källkoden i en variabel så jag kan manipulera den och sedan skicka in i en databas.

 

Allt kommer att köras från ett CRON job.

Länk till kommentar
Dela på andra webbplatser

Kan du inte mellanlagra widgetdatan i egen databas istället för att den hämtas från tjänsten?!

Länk till kommentar
Dela på andra webbplatser

mindsleep

Kan du inte mellanlagra widgetdatan i egen databas istället för att den hämtas från tjänsten?!

 

Helt klart. Men jag får inte ut datan sorterat. Det blir bara en lång textsträng. Vore mumma om jag kunde få ut datan som HTML. Problemet som jag har nu är att jag inte får ut HTMLén (för parsningens skull) utan bara själva texten. Ett annat problem är att texten skrivs ut...jag vill inte det. Jag vill hantera den först. Men jag skullve vilja ha allt som skickas ut....css + htmlén.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...