2010-02-15 4 views
3

Je veux réaliser la tâche vraiment facile de remplacer le nœud principal d'une page par le nœud principal de la page appelée par un appel ajax.

Je fais comme ça:

 url = 'http://myurl';      
     $.get(url, function(results){ 
      var head = $('head', results); 

      $('head', results).each (
      function() { 
       alert("got a match "); 
      }); 


      var form = $("form.ajax_form_result", results); 
      //update the ajax_form_result div with the return value "form" 
      $('head').html(head); 
      $('#ajax_form_result').html(form); 
     }, "html"); 

Les mises à jour du formulaire fonctionnent sans problème, mais la mise à jour de la tête ne fonctionne pas. $ ("tête", résultats); ne renvoie pas un noeud, ce qui entraîne une tête vide dans le nouveau document.

+0

Hey Tom Tom, Avez-vous déjà trouvé ça? J'essaie de faire la même chose en ce moment et d'avoir le même problème. –

+0

Non, je suis finalement arrivé à la conclusion qu'il devait y avoir une autre solution pour remplacer le nœud principal, restructurer mon problème et ne plus être obligé de recharger le nœud principal. Pourtant, je serais curieux de savoir pourquoi la tête est toujours vide. –

Répondre

1

essayer: $("head", $(results));

"résultats" devraient juste être un bloc de texte au format html. "$ (résultat)" devrait être ce bloc transformé en objets DOM.

+0

Je l'ai essayé mais ça ne change rien. Les deux approches mènent au même résultat, une tête vide ;-) Alors que je suis sûr que mon appel ajax renvoie une page html complète avec un tag de tête. –

0

Cela a bien fonctionné pour moi:

var feed = http://www.feed.com/page.html; 

jQuery.get('http://yourdomain.com/proxy.php?url='+feed+'', function(html){ 
    if (html == '') { 
     alert('Invalid URL'); 
     return false; 
    } 

    html = html.replace(/<(\/?)(html|head|body)([^>]*)>/ig, function(a,b,c,d){ 
     return '<' + b + 'div' + (b ? '' : ' data-element="' + c + '"') + d + '>'; 
    }); 

    RSSlink = jQuery(html).find('[data-element=head]').find('link[type="application/rss+xml"]').eq(0).attr('href'); 

}); 

Il devrait être en mesure de faire ce que vous avez besoin de faire!

0

J'ai mis en œuvre cette solution à mon problème:

var myUrl="http://urlExampleSubstituteWithYour" 
$.get(url, function(data) { 
    // Get the string index of the content of the start head tag 
    var startHead=(data.toString().indexOf("<head>"))+6; 
    // Get the string index of the finish head tag 
    var stopHead=data.toString().indexOf("</head>"); 
    // Create a string of the head content of the myUrl page 
    var head=data.substring(startHead+6,stopHead); 
    // Apply HTML to my block... 
    $("#idOfMyBlock").html(head); 
}); 

Cette solution (peut-être pas le meilleur) m'a sauvé! Désolé pour mon anglais!

Questions connexes