2010-01-02 10 views
1

Je veux charger dans <div class="test"> du contenu d'une autre URL ex: http://someurl.com/default.aspx.AJAX ne fonctionne pas avec jQuery

J'ai essayé ce code:

$(".test").load('http://someurl.com/default.aspx'); 

Mais il ne fonctionne pas.

Avec fichier local il fonctionne, mais pas par http: // ...

quelqu'un peut me aider?

Merci

+0

Est-il charger l'URL dans l'onglet net Firebug ? Des erreurs? Quel est le statut? 404? –

+0

toutes les erreurs, juste div vide – AlexC

Répondre

8

On dirait que vous avez heurté le same origin policy. Vous devez utiliser un chemin relatif pour la méthode load(), sinon la plupart des navigateurs retourneront simplement un responseText vide. Comme solution de contournement possible, vous pouvez configurer un reverse proxy très simple (en utilisant si vous êtes sur Apache). Cela vous permettrait d'utiliser des chemins relatifs dans votre requête AJAX, alors que le serveur HTTP agirait comme un proxy pour tout emplacement «distant».

La directive de configuration fondamentale pour configurer un proxy inverse dans mod_proxy est le ProxyPass. Vous utiliserez généralement comme suit:

ProxyPass  /ajax/  http://someurl.com/ 

Dans ce cas, le navigateur serait demander /ajax/default.aspx mais en fait le serveur servirait en agissant comme mandataire à http://someurl.com/default.aspx. Si vous utilisez IIS, vous pouvez utiliser Managed Fusion URL Rewriter and Reverse Proxy pour configurer un proxy inverse.

0

vous ne pouvez pas faire de domaine croisé avec AJAX. c'est une petite solution en PHP load funcion:

JS:

$(".test").load("myloadurl.php", {url: 'http://someurl.com/default.aspx'}); 

myloadurl.php

<?php 
header('Content-type: text/html'); 
print load($_GET['url']); 
0

Si vous avez le contrôle sur someurl.org vous devez utiliser JSONP ce qui est une bonne façon de faire des requêtes AJAX entre navigateurs.

Par exemple, vous avez http://someurl.org/default.php contenant quelque chose comme ceci:

<?php 
echo $_GET['jsoncallback'] . '(' . $results_in_json_format . ')'; 

Maintenant, vous pouvez faire votre requête AJAX avec jQuery comme ceci:

$.getJSON("http://someurl.com/default.php?jsoncallback=?", function(data) { 
    $(".test").html(data); 
});