2012-10-13 80 views
1

我正在研究一個應用程序,該應用程序向url發送請求並使用jQuery解析html中的表格。雖然這似乎工作相當不錯,當返回的HTML代碼的數量是合理的,它以某種方式失敗與大數據集。jQuery解析巨大的響應失敗

問題開始時

$.get(url, function(response){ 
    $(response).find('table'); 
    }) 

儘管string.However同一段代碼的響應具有桌子返回emtpy搜索結果當表很小(約1000列)

工作得很好任何想法如何解決這個問題?

出於測試目的,我用這個數據集作爲目前工作,http://socr.ucla.edu/docs/resources/SOCR_Data/SOCR_Data_Dinov_020108_HeightsWeights.html

任何其他建議,使這一進程更快一點?

+2

什麼是$(響應)',它是否構建了一個合適的文檔(片段)?嘗試記錄'$(response)[0]'並檢查它。這在哪個瀏覽器中發生? – Bergi

+0

請注意,jQuery本身不會對響應進行任何解析 - 瀏覽器會這樣做。圖書館只是爲你安排細節。 – Pointy

+0

我已經在Firefox和Chrome v21中測試過了,下面是Chrome控制檯的一個有趣的截圖http://ge.tt/9XZDVSP/v/0 –

回答

1

試試這個:

$.get(url, function(response){ 
    var $response = $(response); 
    var $table = $response.is('table') ? $response : $response.find('table'); 
    // ... 

}) 

如果響應HTML/XML是一種<table>,然後find()不會發現它。它只看你開始的元素的後代。上面的代碼檢查你是否已經有了<table>

+0

似乎是合法的,頁面是從x:str生成的,因此響應是一個表格。謝謝 –

+0

是的,jQuery似乎並沒有從你的HTML字符串中建立一個文檔,但是像'innerHTML'那樣解析它 - doctypes,''或''標籤是無效的 – Bergi