2012-08-03 67 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