2009-12-03 5 views
0

J'ai donc une structure div imbriquée et je voudrais obtenir le contenu du deuxième niveau. Comment dois-je faire avec jQuery .load? Les travaux suivants ne avec divs simples (non imbriqués) ...comment obtenir le contenu de div nested avec jQuery

.load("https://remote-site.com/blah.html #div_1", function() { } 

Ok, tout le truc est:

<html> 
<head> 
<title>AJAX Checker </title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
<script src="jquery.js" language="javascript" type="text/javascript"></script> 
<script type="text/javascript"> 

$(document).ready(function() { 
    $("#loadData").click(function() { 
    $(this).text("...One Moment Please..."); 
    $("#container").append('<div id="favoriteMovies"></div>') 
        .children("#favoriteMovies").hide() 
        .load("https://remote-site/blah.html", function() { 
        var elem = $(this).find('#subject'); 
        $("#loadData").remove(); 
        $("#favoriteMovies").slideDown("slow"); 
        }); 
    return false; 
    }); 
}); 

</script> 
</head> 
<body> 
<div id="container"> 
<a href="#" id="loadData">Click</a> 
</div> 
</body> 
</html> 

Répondre

1

Tout d'abord, les données de chargement avec AJAX ne fonctionnera que si la page est le même domaine. "site distant" indique que vous essayez d'obtenir des éléments d'un domaine différent.

Ce que vous pouvez faire pour contourner cela est d'avoir un script côté serveur qui récupère le contenu et le renvoie. En PHP, vous voudriez utiliser les fonctions cURL (il y a beaucoup de questions à propos de ce genre de chose, faites juste une recherche avec la langue que vous avez choisie).

// `getpage.php` would be your script that fetches the URL provided 
.load("http://yoursite.com/getpage.php?url=https://remote-site.com/blah.html #div_1", function() { 
    // `$(this)` should contain the div you selected 
    $('#loadData').html($(this)); // replace `loadData` with whatever div you wanna store the content in 
} 
+0

J'ai ajouté t Tout le code, comment puis-je ajouter le test de cet elem à cette autre div? Merci d'avance – Istvan

+0

J'ai supposé de votre autre commentaire que la page * est * sur un autre domaine, donc j'ai mis à jour ma réponse avec une solution de contournement, et comment utiliser le contenu que vous obtenez. – DisgruntledGoat

3

En supposant que le 2ème niveau div a et id

.load("https://yoursite.com/blah.html #div_1 #2ndlevel_div", function() { } 

sélecteur Else change en conséquence comme vous le feriez normalement (par exemple, premier enfant div de #div_1)

.load("https://yoursite.com/blah.html #div_1 > div:first", function() { } 

BTW .: Notez cette ne fonctionnera que pour votre propre page (les demandes inter-domaines ne sont pas supportées par ajax

+0

Merci également. Je viens de remarquer que XSS n'est pas supporté par ajax :)))) – Istvan

Questions connexes