FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Nykomling
|
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. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
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> |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
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:
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
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> |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
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.
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
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...
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
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. |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
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).
|
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Klarade millennium-buggen
|
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).. |
||
![]() |
![]() |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|