我正在尝试使用JQuery从sharepoint站点获取列表数据,但还没有返回任何内容,firebug中也没有错误。有什么问题的线索?
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
var soapEnv =
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
<soapenv:Body> \
<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
<listName>Action Items</listName> \
<viewFields> \
<ViewFields> \
<FieldRef Name='Title' /> \
</ViewFields> \
</viewFields> \
</GetListItems> \
</soapenv:Body> \
</soapenv:Envelope>";
$.ajax({
url: "http://my_site/_vti_bin/lists.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset=\"utf-8\""
});
});
function processResult(xData, status) {
$(xData.responseXML).find("z\\:row").each(function() {
console.log("aaaa");
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
$("#tasksUL").append(liHtml);
});
}
答案 0 :(得分:4)
在你的行之后
function processResult(xData, status) {
添加如下警告:
alert(xData.responseText);
这将显示从GetListItems调用返回的内容。
另外,你应该改变这一行:
$(xData.responseXML).find("z\\:row").
到此:
$(xData.responseXML).find("[nodeName='z:row']")
跨浏览器更可靠。 (参见我的博文:http://sympmarc.com/2009/11/08/sharepoints-web-services-jquery-and-the-zrow-namespace-in-safari-and-chrome/)
正如Rob Windsor在他的回答中提到的那样,我有许多用jQuery包装的SharePoint Web服务,以便在我的SPServices jQuery library中更容易使用它们。我建议你尝试一下,因为你不需要做太多的工作。
答案 1 :(得分:2)
我强烈建议您使用客户端对象模型而不是Web服务。功能更丰富,更容易使用。
The Client Object Model and jQuery
如果您真的想使用网络服务,我建议您查看SPServices project。
答案 2 :(得分:1)
您应该处理ajax success
事件,而不是完整事件。完整的活动没有那个签名。
http://api.jquery.com/jQuery.ajax/
完成(jqXHR,textStatus)
成功(data,textStatus,jqXHR)
答案 3 :(得分:0)
也许你有同源政策违规。
检查运行脚本的当前网址是否以http://my_site/
希望这会有所帮助。干杯
答案 4 :(得分:0)
将processResult
功能放在$(documnet).ready
内并检查