2010-03-16 63 views
0

我想在頁面加載時使用來自ajax調用的XML響應填充變量,以便在keyup上我可以通過該列表進行過濾,而無需重複獲取請求(認爲非常簡單自動完成)。我遇到的麻煩似乎與變量範圍有關,但我對js/jQuery相當陌生,所以我不太確定。從Sharepoint列表Web服務返回並保存XML對象

以下代碼不會對密鑰進行任何操作,並向它添加警報,告訴我它正在執行關鍵字上的leadResults(),並且該變量正在返回XML響應對象,但它看起來是空的。奇怪的是,如果我將leadResults()呼叫轉移到getResults()函數中,UL就會正確填充結果。

我在這邊撞牆,請幫忙!

var resultsXml; 

$(document).ready(function() { 
    var leadLookupCaml = 
     "<Query> \ 
      <Where> \ 
       <Eq> \ 
        <FieldRef Name=\"Lead_x0020_Status\"/> \ 
        <Value Type=\"Text\">Active</Value> \ 
       </Eq> \ 
      </Where> \ 
     </Query>" 

    $().SPServices({ 
        operation: "GetListItems", 
        webURL: "http://sharepoint/departments/sales", 
        listName: "Leads", 
        CAMLQuery: leadLookupCaml, 
        CAMLRowLimit: 0,      
        completefunc: getResults  
       }); 

}) 

$("#lead_search").keyup(function(e) { 

leadResults(); 

}) 



function getResults(xData, status) { 
resultsXml = xData; 

} 

function leadResults() { 
xData = resultsXml; 
    $("#lead_results li").remove(); 
    $(xData.responseXML).find("z\\:row").each(function() { 

     var selectHtml = 
      "<li>" 
      + "<a href=\"http://sharepoint/departments/sales/Lists/Lead%20Groups/DispForm.aspx?ID=" + $(this).attr("ows_ID") + ">" + $(this).attr("ows_Title")+" : " + $(this).attr("ows_Phone") + "</a>\ 
      </li>"; 
     $("#lead_results").append(selectHtml); 



    }); 
} 

回答

0

經過證明閱讀我的提交後,它是非常明顯的! ajax調用需要同步進行。將async設置爲false保存了一天!