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);
});
}