Lea una lista de SharePoint y coloque los datos en un archivo HTML a través de la función de JavaScript
sharepoint javascript rest api (3)
Hay una serie de problemas con su código.
En primer lugar, solo funcionará en una página de SharePoint, no de forma independiente, ya que está utilizando funciones de SharePoint como SP.ClientContext.
En segundo lugar, parece haber errores en el fragmento. Por ejemplo, creo que this.collList
realidad debería ser var collList
.
Tal vez intente con esta otra referencia (pero nuevamente solo funcionará en una página de SharePoint 2010 o 2013):
http://msdn.microsoft.com/en-us/library/hh185007(v=office.14).aspx
Tengo una URL de SharePoint que es solo una lista de SharePoint con algunas columnas y filas de datos.
Me gustaría leer esa información de esa URL específica y poner los datos en un archivo HTML a través de una función de JavaScript.
No tengo experiencia en JavaScript y HTML5, así que no estoy seguro de cómo llamar a esas funciones para recuperar los datos.
Eso es lo que tengo hasta ahora y no funciona en absoluto:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
</head>
<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$().SPServices({
operation: "GetListItems",
webURL: "http://myURL.aspx",
async: false,
listName: "Announcements",
CAMLViewFields: "<ViewFields><FieldRef Name=''Title'' /></ViewFields>",
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
$("#tasksUL").append(liHtml);
});
}
});
});
</script>
<ul id="tasksUL"/>
<body>
</body>
</html>
Si trato de abrir el archivo index.html no ocurre nada, así que no sé cómo llamar a mis funciones en mi archivo HTML. Además, no sé cómo definir SP.ClientContext en el archivo HTML.
Muchas gracias por adelantado.
La biblioteca SPServices lo hará por usted muy fácilmente.
Querrá usar esta llamada. Normalmente lo encapsulo en mi propia función para hacer que el código sea más bonito, especialmente si estoy haciendo muchas consultas de listas AJAX.
Básicamente lo que sucederá es que SharePoint devolverá un feo documento XML que tiene todos los elementos de la lista tal como se define en la Documentación de Microsoft . Atravesará este documento usando SPServicios como este:
<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$().SPServices({
operation: "GetListItems",
async: false,
listName: "Announcements",
CAMLViewFields: "<ViewFields><FieldRef Name=''Title'' /></ViewFields>",
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
$("#tasksUL").append(liHtml);
});
}
});
});
</script>
<ul id="tasksUL"/>`
Linea por linea:
<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
JQuery es requerido por SPServices
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
Incluyendo SPServices
$(document).ready(function() {
"Cuando el DOM está cargado, ejecuta esta función"
$().SPServices({
"Esta es una función de SPServicios"
operation: "GetListItems",
"Estamos utilizando el servicio web ''GetListItems''"
async: false,
"No asincrónico, hazlo ahora"
listName: "Announcements",
"Estamos usando la lista ''Anuncios''
CAMLViewFields: "<ViewFields><FieldRef Name=''Title'' /></ViewFields>",
No te preocupes por esta línea
completefunc: function (xData, Status) {
"Ejecute esta función cuando se complete la solicitud. Los datos se pasan como xData, el estado de finalización se pasa como estado"
$(xData.responseXML).SPFilterNode("z:row").each(function() {
"Tome la cadena de respuesta y solo tome los nodos XML de" fila ". Para cada uno de estos nodos, ejecute esta función ..."
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
"Cree una variable llamada liHtml igual a una etiqueta li y el atributo XML ows_Title"
$("#tasksUL").append(liHtml);
"Añade este elemento de lista al elemento con una ID de ''tasksUL''"
En realidad, el código que está utilizando es para la biblioteca SPServices escrita por Sympmarc y en su documentación menciona que debe usarse dentro de las páginas que se ejecutan en el Contexto de SharePoint como para realizar llamadas. __REQUESTDIGEST post variable y esto no estará disponible en páginas normales de HTML5, las opciones que puedo darte son éstas:
1) Habilite la autenticación Http básica en el sitio de SharePoint y luego use la función $ ajax de jquery con las credenciales de autenticación básica en su llamada al servicio.
2) Cree un controlador http con código para hacer su trabajo y luego pase json desde jquery para traer datos de este controlador.