2010-07-06 15 views
5

Estoy intentando eliminar un documento, utilizando el servicio web sharepoint, si alguien carga un documento y luego pulsa cancelar. He creado la siguiente funciónEliminación de un documento mediante el servicio web sharepoint utilizando JQuery

function DeleteDocument(libraryName, ID) 
{ 
debug.log('DeleteDocument (Entry) libraryname = '+libraryName+' ID='+ID); 
    var batch = 
     "<Batch OnError='Continue'> \ 
      <Method ID='1' Cmd='Delete'> \ 
       <Field Name='ID'>" + ID + "</Field> \ 
      </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>"+libraryName+"</listName> \ 
       <updates> \ 
       " + batch + "</updates> \ 
      </UpdateListItems> \ 
      </soap:Body> \ 
     </soap:Envelope>"; 
    debug.log(soapEnv); 
    $.ajax({ 
     url: "http://<serverandsite>/_vti_bin/lists.asmx", 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("SOAPAction", 
      "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"); 
     }, 
     type: "POST", 
     dataType: "xml", 
     data: soapEnv, 
     complete: function(xData, status){   
      alert(xData.responseText); 
      debug.log('xData response = ' + xData.responseText); 
      debug.log('status response = ' + status); 
     }, 
     contentType: "text/xml; charset=utf-8" 
    }); 
} 

cuando lo ejecuto me sale

0x81020030 - Nombre de archivo no válido

El nombre del archivo que ha especificado no podía ser utilizado . Puede ser el nombre de un archivo o directorio existente , o puede no tener permiso para acceder al archivo .

¿Alguien tiene alguna idea de por qué esto podría estar fallando? Estoy ejecutando el código contra una biblioteca de documentos estándar.

Lo he intentado con los archivos de entrada y de salida y recibo el mismo mensaje. Necesito esto para ejecutar contra documentos que están desprotegidos, de hecho ellos nunca se han registrado, por lo que no tengo ni idea de cómo podría funcionar el fileref

+0

Solo para agregar, acabo de intentar forzar un elemento y esto produce el mismo error – Buzzby

Respuesta

4

Para documentos también necesita incluir el fileRef

<Field Name="FileRef">http://Server/[sites/][Site/]Library/File</Field> 
+0

Ok, lo que podría hacer escribir un pequeño servicio web que incluya el ID y el nombre de la lista y luego use el modelo de objetos para hacerse cargo del pago y luego elimine el archivo. – Buzzby

+0

Terminé borrando el documento a través de un controlador de eventos, pero esto debería funcionar – Buzzby

Cuestiones relacionadas