2012-08-03 91 views
0

我正在使用傳統的ASP,Ajax和JQuery處理tol,並且在最後一步我現在開始出現一個奇怪的問題。Ajax返回正確的結果,但格式錯誤

我通過Ajax向我的Asp頁面提交查詢字符​​串。然後asp頁面查看值或某些參數,然後爲每個參數運行for循環。這是我的一個for循環代碼:

if not edBlogRS.eof then 
     for arrKey = 0 to ubound(edBlogDocsArr) 
      if not edBlogRS.eof then 
       doc_headline = edBlogRS("doc_headline") 
       doc_headline = Replace (Replace (Replace (Replace (Replace (doc_headline, "–","-"), "」","''"), "‘", "'"), "「","''"), "’", "'") 
       featuredRecords = featuredRecords & response.write("<li id="&chr(34)& edBlogRS("doc_id") &chr(34)&" value="&chr(34)& edBlogRS("doc_id") &chr(34)&"><div class=""sort""><img src=""http://img.deusm.com/deusm/sort_icon.gif"" border=""0"" /></div><div class=""delete"">Delete "& edBlogRS("section_type") &"</div><b>"& edBlogRS("doc_headline") &"</b><br />- "& edBlogRS("section_name") &" | "& edBlogRS("doc_published") &"</li>") 
      end if 
     next 
     featuredRecords = featuredRecords & response.write("<input type=""hidden"" />") 
    else 
     featuredRecords = "<span class=""error"">** There was an error rebuilding the featured document list.<br /></span>" 
     response.write(featuredRecords) 
    end if 

我的其他兩個循環做同樣的事情,除了有更新以匹配的內容(即特定組的RS和[]記錄的值:blogRS/blogRecords, rightRS/rightRecords)

我的目標是將結果帶回我的主頁面,其中每個結果將被添加到匹配列表的Html中。這是我的Ajax:

$.ajax({ 
       type: "POST", 
       url: "docsearch_action.asp", 
       data: { pub: publication, docs: queryString, func_id: "2" }, 
       dataType: "html", 
       success: function(featuredRecords, blogRecords, rightRecords) { 
        $("#featured_docids").html(featuredRecords); 
        $("#blogs_docids").html(blogRecords); 
        $("#right_docids").html(rightRecords); 
       }, 
       error: function(){ 
       alert("An error occured. Please try again."); 
       } 
     }); 

期望的結果將是三個列表每個包含其coorespnding文件:

精選文檔 文檔中的一個 文檔兩個

博客 文檔的三種 文件四

其他 文檔五個 文檔六

然而,結果是我得到這個樣子的:

精選文檔 文檔中的一個 文檔兩個 文檔的三種 的Docment四個 文檔五 文件六

博客 成功

其他

我相當一段時間與此並不能確定該問題可能是在這一點上有什麼搞亂後難住了。任何幫助將不勝感激!

**編輯**

這是我的新的成功的呼叫:

success: function(records) { 
        $("#featured_docids").html(records[0]); 
        $("#blogs_docids").html(records[1]); 
        $("#right_docids").html(records[2]); 
       }, 

回答

2

你得到的數據參數數據..另外兩個是textStatus和XMLHttpRequest對象。

success(data, textStatus, jqXHR) 

所以

success: function(featuredRecords, blogRecords, rightRecords) { 

featuredRecords === datablogRecords === textStatus rightRecords === jqXHR

此外,如果你是在一個數組讓你的數據,你可以只使用索引來獲取數據

success: function(data) { 
       $("#featured_docids").html(data[0] + data[1]); 
       $("#blogs_docids").html(data [2] + data[3]); 
       $("#right_docids").html(data [4] + data[5]); 
      }, 

但你正在獲取所有數據一個字符串,所以你將不得不修改你的ASP代碼來返回你想要的數據,然後使用數據對象把它放在你想要的地方。

可能創建一個數組?或arrayList?在循環中添加的每個元素,然後把它寫成,在您迴應

其實我不明白你怎麼寫你的代碼,因爲我真的不知道ASP/VB,但我會試着解釋作爲最佳我可以

創建一個數組

yourarray = new array();

添加你需要你的陣列是什麼 - 我猜這就是你的HTML是什麼?

yourarray[0] = doc1

yourarray[0] = doc2

當您完成添加到您的陣列..

response.write(yourarray);

+0

爲什麼不顯示我的結果我想怎樣你的解釋澄清了。但是,在創建數組並返回結果後,我的第一個列表顯示「<」,第二個「l」和第三個「i」。在Firebug中,完整的Html正在被正確地返回,但它並沒有按照我需要的方式被JQuery解析。任何想法? – Yuschick 2012-08-03 16:39:12

+0

我試圖在編輯中儘可能地展開。希望它能幫助你獲得預期的結果。 @Yuschick – 2012-08-03 16:46:57

+0

我不相信這個問題是我的ASP陣列根據螢火蟲,正在返回正確的HTML是。但是當我在做.html(記錄[1])時,在我的Ajax中;例如...,它返回我返回的Html中的第一個字符與我創建的整個記錄​​[1]數組項。 – Yuschick 2012-08-03 16:49:36