WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   jquery load() fast mot externa sidor (https://www.wn.se/forum/showthread.php?t=37630)

elitasson 2009-06-27 17:23

Tjena

Hur gör jag om jag vill ha samma funktionallietet som load() har i jquery fast mot en extern sida.
Jag vill alltså kunna skicka parametrar (POST/GET) till en extern sida via jquery (js).

Resultatet av målsidan ska sen kunna laddas in i en div, precis som man kan med load().

Hoppas ni hängde med och att ni kan hjälpa mig.

//Johan

KarlRoos 2009-06-27 17:35

GET är ju bara att skicka i URL'en.

För POST: http://docs.jquery.com/Ajax/jQuery.post

Clarence 2009-06-27 17:57

Normalt sätt brukar man använda ett proxy-script på sin egen server som postar det mot den externa servern.

elitasson 2009-06-27 18:18

Citat:

Originally posted by Clarence@Jun 27 2009, 16:57
Normalt sätt brukar man använda ett proxy-script på sin egen server som postar det mot den externa servern.

Det ska användas på andra hållet. Jag ska enbart kunna lägga in en .js-fil på valfri domän så ska scripet funka mot min domän.

Get och Post istället för load funkar inte mot externa sidor.

taz76 2009-06-27 20:03

Citat:

Originally posted by elitasson@Jun 27 2009, 18:18
Get och Post istället för load funkar inte mot externa sidor.

Nepp.. javascript har detta för högre säkerhet. Lösningen finner du i svaret från Clarence.

Clarence 2009-06-27 22:45

Citat:

Ursprungligen postat av elitasson
Citat:

Ursprungligen postat av Clarence
Normalt sätt brukar man använda ett proxy-script på sin egen server som postar det mot den externa servern.


Det ska användas på andra hållet. Jag ska enbart kunna lägga in en .js-fil på valfri domän så ska scripet funka mot min domän.

Get och Post istället för load funkar inte mot externa sidor.

Jag tror du missuppfattade mitt svar. För att förtydliga:

Du lägger en javascript- och t ex en PHP-fil på domänen du vill hämta innehåll till. Javascriptet kör ett ajax-anrop mot denna PHP-fil som sedan vidarebefodrar anropet till en extern server med t ex libcurl eller file_get_contents.

Det finns dock alternativ, t ex:
- Ladda en extern javascript-fil från den andra domänen som inkluderas dynamiskt med <script>-tagg
- Ladda innehållet i en iframe och hantera sedan innehållet i iframen med javascript
- Använda P3P headers

Alla har dock (i min mening) nackdelar jämfört med proxy-lösningen.

elitasson 2009-06-27 22:52

Jag har som sagt enbart en .js-fil att tillgå på den externa servern.

Har lyckats lösa det i FF, men det vill sig varken i Chrome, Safari eller IE.

Citat:

var exampleurl = "http://example.se/blogg_send.php?blogid=<?php print $_GET['id']; ?>&url=" + url + "&text=" + text +"&jsoncallback=?";

$.getJSON(exampleurl, function(data) {

$("#skickat").html(data.msg);
});

Sen har vi en ruta med 2-3 st klicklänkar där man nog kan lösa hide/show på ett bättre sätt. Kan någon ge förslag? Tack.

Citat:

$sat("#example_ruta").html(blogbox);

$sat("#write").click(function () {

$sat("#send").show();
$sat("#write").hide();
$sat("#back").hide();

$sat("#skriv").show();
$sat("#msg").hide();
$sat("#works").hide();
$sat("#skickat").hide();

});

$sat("#send").click(function () {

$sat("#back").show();
$sat("#write").hide();
$sat("#send").hide();

$sat("#skickat").show();
$sat("#skriv").hide();
$sat("#msg").hide();
$sat("#works").hide();

$sat("#work").click(function () {

$sat("#back").show();
$sat("#write").hide();
$sat("#send").hide();

$sat("#works").show();
$sat("#skriv").hide();
$sat("#msg").hide();
$sat("#skickat").hide();
});

$sat("#back").click(function () {

$sat("#write").show();
$sat("#send").hide();
$sat("#back").hide();

$sat("#msg").show();
$sat("#skriv").hide();
$sat("#works").hide();
$sat("#skickat").hide();
});

});


Clarence 2009-06-27 23:18

Citat:

Originally posted by elitasson@Jun 27 2009, 21:52
Jag har som sagt enbart en .js-fil att tillgå på den externa servern.

Har lyckats lösa det i FF, men det vill sig varken i Chrome, Safari eller IE.

Default kan du inte göra det i Firefox heller. Det beror på webbläsarens säkherhetsinställningar. För att få något i närheten av hyfsad webbläsar-kompatibilitet måste du titta på alternativa metoder.

En god idé kan vara kolla över denna inställning på din egen dator om du använder Firefox även till tjänster där du är inloggad (t ex WN).

Gällande länkarna kan du kanske ersätta det med ett anrop till en funktion som döljer allt, och sedan t ex $('#send, #skriv').show();

elitasson 2009-06-27 23:56

Clarence:

Om du kollar här så kan du läsa att man ska kunna skicka HTTP GET requester över olika domäner.

När jag testade denna sidan för ett par olika webbläsare jag har på min dator (Chrome, IE, FF) så verkar alla vara kompatibla med denna funktion (getJSON).
Testa själv så får du se.

Hur bemöter du det?

Någon i övrigt som använt getJSON och har lite erfarenheter med tips och idéer som kan hjälpa mig?
Det funkar alltså i FF, men inte i övriga webbläsare jag testat.

Clarence 2009-06-28 00:30

Citat:

Originally posted by elitasson@Jun 27 2009, 22:56
Clarence:

Om du kollar här så kan du läsa att man ska kunna skicka HTTP GET requester över olika domäner.

När jag testade denna sidan för ett par olika webbläsare jag har på min dator (Chrome, IE, FF) så verkar alla vara kompatibla med denna funktion (getJSON).
Testa själv så får du se.

Hur bemöter du det?

Någon i övrigt som använt getJSON och har lite erfarenheter med tips och idéer som kan hjälpa mig?
Det funkar alltså i FF, men inte i övriga webbläsare jag testat.

Sorry, noterade inte att du hade .getJSON. Den alternativa metoden från min tidigare lista som används för JSONP är en <script>-tagg som läggs in i ditt dokument av jquery. Dock visste jag inte att jquery hade en färdig wrapper, så tack för den infon.

Du får nog helt enkelt slå på javascript-debuggen i respektive browser så att du kan se felmeddelandet. Felet kan vara i princip vad som helst med hanteringen av datan i din javascript eller strukturen på datan i JSON-filen (dock ett mindre fel, om Firefox klarar sig igenom det).

elitasson 2009-06-28 02:02

Då har jag hittat ett par grejer i koden som jag missat (småsaker) som icke avslutade länkar etc som gjorde att IE inte ville hänga med.

Dock funkar allt i IE, FF och Safari nu. Men inte i Chrome, återkommer när jag får rätt på det.


Alla tider är GMT +2. Klockan är nu 16:23.

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