jQuery .load() external url

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
fusion
Δημοσιεύσεις: 146
Εγγραφή: 23 Αύγ 2008 21:34
Τοποθεσία: Λάρισα
Επικοινωνία:

jQuery .load() external url

Δημοσίευση από fusion » 27 Φεβ 2010 13:27

O τυπάς σε αυτό το screencast σε κάποιο σημείο καλεί με την load() ένα συγκεκριμένο div από εξωτερικό url.
Ψάρωσα και εγώ και είπα να το δοκιμάσω :P

Κώδικας: Επιλογή όλων

$(function () {
	$(".fooLink").live("click", function(e){
		$("#content").load('http://www.mad-at-teilar.gr/ #sidebar');
		e.preventDefault();
	});
});
και μου βγάζει αυτό το error:

Εικόνα

Το ίδιο κάνει με οποιοδήποτε url εκτός από τα αρχεία που είναι local. Αν φορτώσω ένα test.html ας πούμε, δουλεύει κανονικά.
Για πείτε ιδέες :)

O πρώτος που θα πει <iframe> κερδίζει κουλούρι.

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

jQuery .load() external url

Δημοσίευση από dimsis » 27 Φεβ 2010 14:34


Άβαταρ μέλους
fusion
Δημοσιεύσεις: 146
Εγγραφή: 23 Αύγ 2008 21:34
Τοποθεσία: Λάρισα
Επικοινωνία:

jQuery .load() external url

Δημοσίευση από fusion » 27 Φεβ 2010 14:36

ευχαριστώ, αλλά γιατί δεν δουλεύει?

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

jQuery .load() external url

Δημοσίευση από dimsis » 27 Φεβ 2010 15:09

Γιατί η ajax.load (και ακόμα γενικότερα για XMLHTTPRequest κλήσεις) απαγορεύει για λόγους ασφαλείας το cross domain scripting, οπότε μόνο με μια πατέντα σαν τον proxy του link που σου έδωσα μπορείς να κάνεις δουλειά. Τράβηξε το περιεχόμενο του άλλου site στο δικό σου domain και μετά κάλεσε με την ajaxload τη δική σου σελίδα.

Από την 1.2 επιτρέπουν στις getScript και getJSON να τραβάνε από εξωτερικά domains αλλά μόνο js και json αντιστοίχως.

Δες και εδώ: https://developer.mozilla.org/En/HTTP_Access_Control
For example, prior to Firefox 3.5, HTTP Requests made using the XMLHttpRequest object were subject to the same-origin policy.
...
This cross-origin sharing standard is supported by Firefox 3.5 and later, and is used to enable cross-site HTTP requests for:

* Invocations of the XMLHttpRequest API in a cross-site manner, as discussed above. This is implemented in Firefox 3.5.
* Web Fonts (for cross-domain font usage in @font-face within CSS), so that servers can deploy TrueType fonts that can only be cross-site loaded and used by web sites that are permitted to do so. This is implemented in Firefox 3.5.
κάθε τρεις και λίγο έχουμε και αλλαγές βλέπεις και εγώ τώρα το πέτυχα αυτό και μάλιστα μέσω του John Resig :)

Διάβασε και εδώ έναν άλλον τύπο που προτείνει διάφορες λύσεις για το θέμα:
http://fettig.net/weblog/2005/11/28/how ... ur-domain/

Άβαταρ μέλους
fusion
Δημοσιεύσεις: 146
Εγγραφή: 23 Αύγ 2008 21:34
Τοποθεσία: Λάρισα
Επικοινωνία:

jQuery .load() external url

Δημοσίευση από fusion » 27 Φεβ 2010 15:44

I see, είδα ξανά το screencast και τελικά έκανα λάθος (προφανώς), δεν καλεί εξωτερικό url.

Θα δοκιμάσω την ιδέα με το proxy.

και ένα link από εμένα :P
http://www.wait-till-i.com/2010/01/10/l ... y-and-yql/

Άβαταρ μέλους
fusion
Δημοσιεύσεις: 146
Εγγραφή: 23 Αύγ 2008 21:34
Τοποθεσία: Λάρισα
Επικοινωνία:

jQuery .load() external url

Δημοσίευση από fusion » 27 Φεβ 2010 18:50

Ότι proxy script έχω δοκιμάσει μέχρι στιγμής δεν έχει δουλέψει.

@dimsis
Έχεις δοκιμάσει κάποιο από τα scripts που παρέθεσες?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

jQuery .load() external url

Δημοσίευση από fafos » 27 Φεβ 2010 19:37

poios o logos na travhkseis outserver periexomeno me ajax?

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

jQuery .load() external url

Δημοσίευση από dimsis » 27 Φεβ 2010 19:55

demo: http://www.woot.gr/playground/ajax_proxy/

index.php

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Proxy ajax test</title>
<script type="text/javascript" src="http&#58;//www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load&#40;"jquery", "1.2.6"&#41;;
</script>
<script>
$&#40;function &#40;&#41; &#123; 
	$&#40;"#content"&#41;.load&#40;"proxy.php #sidebar"&#41;; 
&#125;&#41;;
</script>
</head>

<body>
<div id="content">Wait while loading...</div>
</body>
</html>

proxy.php

Κώδικας: Επιλογή όλων

<?php
$html = file_get_contents&#40;"http&#58;//www.mad-at-teilar.gr/"&#41;;
echo $html;
?>

Άβαταρ μέλους
fusion
Δημοσιεύσεις: 146
Εγγραφή: 23 Αύγ 2008 21:34
Τοποθεσία: Λάρισα
Επικοινωνία:

jQuery .load() external url

Δημοσίευση από fusion » 27 Φεβ 2010 20:38

Copy-paste και όμως δεν δουλεύει...

edit
H php δεν θα χτυπούσε error αν είχε πρόβλημα?


UPDATE
Problem Solved! Δουλεύει άψογα, ευχαριστώ...

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης