Kom ihåg mig?

Inkludera fil från annan server med Javascript

 
Ämnesverktyg Visningsalternativ
Oläst 2007-03-27, 20:42 #1
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Jag har en annonssida för båtar och tillbehör. Till hemsidan kan båthandlare ha ett företagskonto där varje annons kopplas till deras konto-ID.

Nu vill jag erbjuda båthandlarna som har företagskonto en ny funktion. Genom att kopiera och klistra in en kod på deras egna hemsida så ska deras annonser på min annonssida även listas ut på deras sajt.

Tanken är att jag gör en fil på min server som tar emot företagets ID-nummer och visar deras annonser. Denna fil ska inkluderas via en t ex. Javascript-kod, den kod som båthandlaren klistrar in i sin hemsidas kod.

Obs: Ingen PHP ska altså skrivas ut på båthandlarens hemsida. Det ska bara vara den kod man annars också kan nå via webbläsaren.

Svar på frågor:

"Varför använder du inte php-kodstycke då?" Svar: För att många av båthandlarnas hemsidor inte stödjer php

"Varför kör du inte bara iframe?" Svar: Jag vill helt enkelt bara undvika iframe. Dessutom ska annonserna smälta in i hemsidans design så bra som möjligt t ex. font-family m.m.

Jag har redan prövat en del men inget fungerar. Jag har försökt få svar på PHPSidan, och fick svar men inget som fungerade. (Länk till tråden på PHPSidan: http://www.phpsidan.nu/forum_thread.php?id....id=7021&page=1)

Det känns som att folk tror att det jag försöker göra är mer avancerat än vad det egentligen är. Jag hoppas jag i denna tråd förklarat tydligt så inga onödiga missförstånd uppstår.
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 20:56 #2
Kolfiber Kolfiber är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 10
Kolfiber Kolfiber är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2007
Inlägg: 10
Använd AJAX. Finns länk till exempel i tråden hos PHPSidan. Det fungerar utmärkt.

Och nej, du behöver inte trycka på en länk för att det ska fungera. Finns andra knep att ta till men det där är en bra grund att utgå ifrån.
Kolfiber är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 20:59 #3
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Men om du läser vidare där så ser du att jag fått det att fungera utan knappen men bara så länge det är inom samma webserver. Poängen med det hela är ju att det ska fungera att inkluder på en annan webserver.

Koden:
Kod:
<script type="text/javascript">
var http = false;
if(navigator.appName == "Microsoft Internet Explorer") {
 http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
 http = new XMLHttpRequest();
} 
 http.open("GET", "http://www.svenskabatmarknaden.se/foretag/inkludera.php", true);
 http.onreadystatechange=function()
 {
  if(http.readyState == 4)
	{
   document.getElementById('foo').innerHTML = http.responseText;
  }
 }
 http.send(null); 
</script>
<div id="foo"></div>
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 21:15 #4
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Ajax kan inte användas mot en remote server;

Följande kod gör det du efterfrågar (laddar en js-fil från en annan server och exekverar den):

Citat:
function loadContent(file){
var head = document.getElementsByTagName('head').item(0)
var scriptTag = document.getElementById('loadScript');
if(scriptTag) head.removeChild(scriptTag);
script = document.createElement('script');
script.src = file;
script.type = 'text/javascript';
script.id = 'loadScript';
head.appendChild(script);

}
I sitt sammanhang används den här: http://www.boksson.se/boksson_isbn.js (förklaring finns på http://blogg.mjoelkbar.net/?p=31
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 21:21 #5
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Fungerar ej:
Kod:
<script type="text/javascript">
var head = document.getElementsByTagName('head').item(0)
var scriptTag = document.getElementById('loadScript');
if(scriptTag) head.removeChild(scriptTag);
script = document.createElement('script');
script.src = 'http://www.svenskabatmarknaden.se/foretag/inkludera.php';
script.type = 'text/javascript';
script.id = 'loadScript';
head.appendChild(script);
</script>
Det är förresten inte en JS-fil som ska laddas från en annan server. Det är en php-fil, som ska laddas med HJÄLP av JS.
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 21:42 #6
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Enda sättet jag vet om är att göra så om jag har beskrivit. Din phpfil får spotta ur sig js-statements som exekveras av funktionen ovan. Det kan vara document.writes eller nånting annat, men det måste vara js-kod.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 21:54 #7
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Jasså. Det förvånar mig faktiskt att det inte finns någon redan färdig funktion för detta i JS ungefär som i PHP med include. Det måste ju ändå vara en relativt vanligt behövande funktion. Om det VERKLIGEN inte finns något sätt att lösa detta på med JS så får det väl bli smaklösa iframe. Känns orent på nått sätt...
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 22:08 #8
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Det du får göra för att få ovanstående att funka är att http://www.svenskabatmarknaden.se/foretag/...g/inkludera.php skall innehålla js-kod, dvs wrappa alltihopa i en sträng som du tilldelar en variabel.

Sen i ditt script så hookar du onload-eventet (så som jag gör i filen jag visade) och lägger till att filen skall laddas ner. Då kan du i samma funktion (din init-funktion som läggs till i onload-event-kön/kedjan) sedan skriva ut all din html till ett elements innerHTML-property.

Låter det komplicerat? Det beror på att det är rätt komplicerat. Det tar tid att lära sig / förstå de här grejerna och det är ingen större ide att sitta och försöka klippa/klistra ihop den här koden utan grundläggandes förståelse för web och javascript i allmänhet.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 22:49 #9
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Att du tycker att jag inte har nån förståelse i Javascript i allmänhet kan jag kanske gå med på, men web va väl lite att ta i. Jag vet vad vi pratar och jag förstår visst vad du menar bara att det känns inte som den mest logiska lösningen. Jag borde kanske bara ha frågat i början om Javascript har någon inbyggd include-funktion (För det tycker jag den borde ha). Men tydligen har den inte det. Ska se om jag får ihop skiten i en sträng. Annars kör jag som sagt iframe (usch).
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-27, 23:20 #10
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Om du kollar på min kod så ser du att jag levererar bygger upp ett objekt med parametrar (ISBNClass). För att fylla det objektet med data anropar jag klassens funktioner från den externa filen på "hemmaservern". Så här ser det ut då: http://www.boksson.se/isbn_js_check.php?is...n=9789172635418

Det är en lösning som är betydligt snyggare än strängen (fast den kräver ju då att du förstår dig på objektorientering i javascript, vilket i och för sig inte är någon stor grej)..
grazzy är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 15:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017