我正在尝试使用列表Web服务中的“UpdateListItems”方法更新SharePoint列表项。 CAML查询:
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + itemID + "</Field>" +
"<Field Name='Status'>" + itemStatus + "</Field></Method>"
itemID,itemStatus并从UI传递为参数。 这会产生以下错误
<Result ID="1,Update">
<ErrorCode>0x80070005</ErrorCode>
<ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x80070005)
</ErrorText>
</Result>
任何人都可以提供帮助。 还有一个问题是更新方法仅基于ID工作,或者是否也有可能传递标题。
由于
答案 0 :(得分:1)
此时您可能不需要,但这对于面临同样问题的其他人可能会有所帮助。
有时出现此错误的原因是SOAP操作中的标头。您需要设置以下内容才能进行更新。:
beforeSend:function(xhr){xhr.setRequestHeader(&#34; SOAPAction&#34;,&#34; http://schemas.microsoft.com/sharepoint/soap/UpdateListItems&#34;);
我创建了以下功能,以便在Sharepoint列表中发送更新:
function sendupdates(location,listName,command,fieldnames,fieldvalues){
var updatesvar;
for(x=0;x<fieldnames.length;x++){
updatesvar = updatesvar + '<Field Name="'+fieldnames[x]+'">'+fieldvalues[x]+'</Field>'
}
var batchvar = '<Batch OnError="Continue" ListVersion="0"><Method ID="1" Cmd="'+command+'">'+updatesvar+'</Method></Batch>';
var soapEnv =
'<?xml version="1.0" encoding="utf-8"?>'+
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
'<soap:Body>'+
'<UpdateListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">'+
'<listName>'+listName+'</listName>'+
'<updates>'+batchvar+'</updates>'+
'</UpdateListItems>'+
'</soap:Body>'+
'</soap:Envelope>';
$.ajax({
url: location+"/_vti_bin/Lists.asmx",
beforeSend: function(xhr) { xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");},
type: "POST",
dataType: "xml",
data: soapEnv,
complete: complete,
contentType: "text/xml; charset=\"utf-8\""
});
}
答案 1 :(得分:0)
尝试使用此CAML工具之一: http://msdn.microsoft.com/en-us/library/ff648040.aspx