2014-09-23 75 views
1

我使用YQL + jQuery从远程页面获取内容,我可以加载页面加载中的内容,但点击页面后菜单到返回到div没有追加的相同页面。使用Ajax调用附加div只能在第一次加载时使用

我是能够实现使用刷新 ele.html(ele.html()),我的代码是波纹管:

$(document).ready(function() { 
$("#divAjaxLoading").show(); 
$.ajax({ 
    type: 'GET', 
    url: "https://query.yahooapis.com/v...", 
    dataType: 'xml', 
    success: function (data) { 
     var result = $(data).find('results').find('.content'); 
     //debugger; 
     $('#Home_CP_Home').html(result); 
     $("#Home_CP_Home").html($("#Home_CP_Home").html()); 
     $("#divAjaxLoading").hide(); 
    } 
    }); 
}); 

enter image description here

+1

什么是你的'.find('results')'结果'? 'results'不是一个有效的选择器,因为没有称为'results'的HTML元素。它可能是类或id吗? – War10ck 2014-09-23 14:35:44

+0

他可能已经注册了一个自定义的HTML元素。虽然这不太可能... – 2014-09-23 14:40:53

+0

结果是** YQL **的一个属性,它包含我需要的HTML内容(来自远程页面的div元素)。 例如:

Tarik 2014-09-23 14:43:24

回答

0

因为我使用ASP.NET项目控件有属性运行at =“server”通过删除该属性将其设置为正常的html div后,我在回发后附加了div。

谢谢

0

你的结果是从纯XML,它是一个XmlDocument实现并包含XmlElement实现。

您的页面是一个HtmlDocument实现并解释HtmlElement,而不是纯XmlElement。

选项1,将您的文件为字符串,并让jQuery的解析它拥有的HTMLDocument:

success: function (data) { 
    var result = $(data).find('results').find('.content'); 
    $('#Home_CP_Home').html(new XMLSerializer().serializeToString(result[0])); 
    $("#divAjaxLoading").hide(); 
} 

选项2,走的XmlDocument中的HTMLDocument创建相同的元素:

function convertHTML(input, output) { 
    switch (input.nodeType) { 
    case Node.ELEMENT_NODE: 
     var i; 
     var newelt = document.createElement(input.tagName); 
     for (i = 0 ; i < input.attributes.length ; i++) { 
      newelt.setAttribute(input.attributes[i].name, input.attributes[i].value); 
     } 
     for (i = 0 ; i < input.childNodes.length ; i++) { 
      convertHTML(input.childNodes[i], newelt); 
     } 
     output.appendChild(newelt); 
     break; 
    case Node.TEXT_NODE: 
     output.appendChild(document.createTextNode(input.nodeValue)) 
     break; 
    } 
    return output; 
} 

然后使用它:

success: function (data) { 
    var result = $(data).find('results').find('.content'); 
    convertHTML(result[0], $("#Home_CP_Home").empty()[0]) 
    $("#divAjaxLoading").hide(); 
} 
+0

第一个选项只在第一个负载使用页面菜单回发后才起作用! 请你可以查看选项2,Nicolas。 – Tarik 2014-09-23 15:19:03

+0

选项2在这里。你有错误吗? – 2014-09-23 15:21:50

+0

使用convertHTML(result [0],$(“#divAjaxLoading”)。empty()[0])没有问题,Nicolas? 因为我没有看到使用$('#Home_CP_Home')。 – Tarik 2014-09-23 15:25:54

相关问题