2013-07-23 81 views
-1

我将提取表格的整个html代码用于页面。这是我的代码。从ajax响应中提取表格

$(document).ready(function() { 
     alert("Hello"); 
     $.ajax(
     { 
     url: '/Member/DownloadUrlData', 
     type: "POST", 
     dataType: "html", 
     async: true, 
     cache: false, 
     beforeSend: function (request) { 

     }, 
     success: function (data) { 

      alert(data); 
      var theHtml = $(data).filter('#container>table:first').html(); 
      $("#rData").append(theHtml); 

     }, 
     error: function (xmlHttpRequest, textStatus, errorThrown) { 
        }, 
     complete: function (xmlHttpRequest, textStatus) { 
     } 
    }); 
    }); 

,但我不能提取错误日志中所示的table.the问题是jquery的cannt访问“”中的数据。我如何删除这个。

+0

'jQuery'会自动删除任何不必要的标签,如'html','head'和'body' – Spokey

+1

究竟是什么问题?你得到什么?你想得到什么?哪里?什么时候?怎么样?为什么? – JotaBe

+1

请告诉我们你在'data'中得到了什么 – Spokey

回答

2

问题是这一行:

var theHtml = $(data).filter('#container>table:first').html();

$(data)将公开body元素的直接孩子的所有孩子,但#container>table:first不能成为body元素的子元素,因为table明确是#container的孩子。

也许你的意思是?

var theHtml = $(data).filter('#container').children('table:first').html();

编辑:针对该理论认为data返回的格式不正确HTML:

如果jQuery的时候,它会分析$(data)返回一个语法错误,这意味着HTML的格式不正确。问题是,jQuery的可以接受各种参数:$()将功能不同,这取决于它是否给出:

  • 一个选择
  • XML或HTML
  • 函数

如果XML或HTML字符串格式不正确,它会尝试将其解释为选择器 - 这会导致错误。迫使它解析为HTML,使用下面的表达式:

$.parseHTML(data)

代替

$(data)

但最好你就不必这样做:问题的根源用AJAX请求返回的HTML,这可能会导致其他地方出现打嗝。我建议通过validator传递该响应,以查看是否可以通过标记纠正问题。

+0

对不起,这是行不通的? – ParVathi

+0

'$(data)'返回什么?'$(data).filter('#container')'返回什么?帮助我们帮助你! – Barney

+0

data返回整个html和$(data).filter('#container')return语法错误,无法识别!Doctype html – ParVathi