Avatar billede bgjensen Nybegynder
05. juni 2005 - 11:03 Der er 9 kommentarer og
1 løsning

link i php fra js

er der en som kan fortælle mig hvorfor dette ikke virker:

<script language=javascript>
    imdblink = opener.document.nyfilm.link.value;
</script>

<?php

$imdblink = "<script language=javascript>document.write(''+ imdblink + '')</script>";

$url = "http://www.imdb.com/title/tt".$imdblink."/";
$cnt = file_get_contents( $url );

den kommer med denne fejl:

Warning: file_get_contents(http://www.imdb.com/title/tt0120591/): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in e:\apache2\htdocs\FilmDB\includes\hent_billede.php on line 18

men hvis jeg erstatter
$imdblink = "<script language=javascript>document.write(''+ imdblink + '')</script>";
med
$imdblink = "0120591";
så virker det fint nok!
Avatar billede nielle Nybegynder
05. juni 2005 - 11:21 #1
PHP afvikles serverside, og vil blive udført før din JavaSript kode.
JavaScript afvikles clientside, og vil altså blive udført (som regel) på en helt anden maskine end den som afviklede din PHP.

Når du derfor forsøger med en konstruktion som:

<script language=javascript>
    imdblink = opener.document.nyfilm.link.value;
</script>

<?php
$imdblink = "<script language=javascript>document.write(''+ imdblink + '')</script>";

- så vil variablen imdblink først blive tildelt en værdi - via sit JS - længe efter at PHP koden er udført, og derfor vil imdblink være null på det tidspunkt hvor din document.write(''+ imdblink + '') udføres. Ergo skriver den intet ud.

Hvis du laver den rettelse som du beskriver i din sidste paragraf, så flytter du tildelingen til PHP koden og så er imdblink pludselig ikke mere null. Derfor virker det.
Avatar billede bgjensen Nybegynder
05. juni 2005 - 11:23 #2
men hvis jeg smider en

echo $imdlink;

ind lige efter

$imdblink = "<script language=javascript>document.write(''+ imdblink + '')</script>";

så skriver den http://www.imdb.com/title/tt0120591/
Avatar billede bgjensen Nybegynder
05. juni 2005 - 11:28 #3
og den skriver jo også at den forsøger at åben den rigtige
Avatar billede nielle Nybegynder
05. juni 2005 - 11:31 #4
Det skyldes at du ser output via din browser, altså efter at JavaScript-koden er blevet udført.

Det ændre ikke ved det faktum at JS-koden ikke er blevet udført endnu på det tidspunkt hvor PHP-koden udføres.
Avatar billede bgjensen Nybegynder
05. juni 2005 - 11:33 #5
nå ok siden man kommer fra inden man når denne, indtaster man imdb linket i et text input kan man få sendt valuen med fra text feltet til denne side uden at submittet formen?
Avatar billede nielle Nybegynder
05. juni 2005 - 11:40 #6
Jeg er sikker på at jeg helt forstår; Hvis brugeren indtaster noget på den foregående side, så skal der submittes hvis denne oplysning skal føres videre til systemet. Og, ellers er der jo ingen pointe i at udfylde et felt.
Avatar billede bgjensen Nybegynder
05. juni 2005 - 11:42 #7
det er fordi der er flere end det ene felt, men link feltet bruges til at hente oplysninger fra imdb, så når man trykker åbner siden med koden fra før,så henter den noget fra imdb og smider det over i formen, derfor skal den helst ikke submittes før dette er gjordt.
Avatar billede nielle Nybegynder
05. juni 2005 - 12:10 #8
Hmm, det kunne måske gøres. Men så er det i givet fald mere en JavaScipt løsning end en PHP-ditto. Desværre er jeg ved at løbe tør for tid - skal ud af døren. Men måske nogle andre kan gøre min skitse til en løsning færdig.

1) I formen sætter din en onBlur event på det felt som indeholder det felt som brugere skal indtaste i.
2) OnBlur klader en JavaScript funktion som danner det korrekte URL.
3) Dette kaldes og der hentes et resultat tilbage - pakket ind i en html-side
4) Resultatet trækkes ud af html-siden.
5) Resultatet udfyldes i det felt hvor du vil have det.

Det kan godt være at dette skylder ved siden af målet, men så må du meget gerne beskrive lidt mere at den overordnede sammenhæng.
Avatar billede bgjensen Nybegynder
05. juni 2005 - 12:25 #9
nielle -> sådan så virker, takker for hjælpen din sidste post hjalp meget, smid et svar når du får tid så får du pointene.
Avatar billede nielle Nybegynder
05. juni 2005 - 20:55 #10
Så du var selv i stand til at løse den. Cool. :^)

...og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester