我试图在页面加载时使用来自ajax调用的XML响应填充一个变量,以便在keyup时可以过滤该列表,而无需进行重复的get请求(考虑非常初级的autocomplete)。我遇到的麻烦似乎潜在地与变量作用域有关,但我对js/jQuery相当陌生,所以我不太确定。
下面的代码没有对key up做任何事情,向它添加警报告诉我它正在对keyup执行leadResults(),变量返回一个XML response对象,但它看起来是空的。奇怪的是,如果我将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);
});
}发布于 2010-03-17 03:49:09
在校对了我的提交之后,这是非常明显的!ajax调用需要同步进行。将async设置为false可节省时间!
https://stackoverflow.com/questions/2457544
复制相似问题