2017-02-01 5 views
0

Я создаю некоторые веб-страницы, используя HTML и JavaScript, и конечный результат должен быть загружен в данный список SharePoint. Я нашел массу подробностей о том, как это сделать, но с самого первого дня я застрял только в одном вопросе. Я пробовал все возможные комбинации, которые даны в hte ниже ссылки.Обновление списка SharePoint с использованием JavaScript

Link

Но конец дня я продолжаю иметь ту же самую ошибку. «SP» не определен.

Чтобы дать вам небольшую заднюю поверхность. Я создал веб-страницы, и веб-страница хранится на сайте SharePoint в общих папках. Теперь для конечного пользователя предоставляется гиперссылка, чтобы щелкнуть ссылку, непосредственно открывающую данную сохраненную веб-страницу в общей папке данного сайта SharePoint. Ниже приведен код. Я знаю, что у меня может быть что-то действительно малое.

<html> 
<head> 
<SCRIPT LANGUAGE="JavaScript"> 
function preparePage() 
{ //Hide Execution lead 
if(document.getElementById("ExeLead").style.display=='none'){ 
document.getElementById("ExeLead").style.display = ''; 
} 
else { 
document.getElementById("ExeLead").style.display = 'none'; 
} 
getDetails(); 
} 

function getParam(name)//to get details that is passed via url 
{ 
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
var regexS = "[\\?&]"+name+"=([^&#]*)"; 
var regex = new RegExp(regexS); 
var results = regex.exec(window.location.href); 
results[1] = results[1].replace(/%20/g," "); 
if(results == null) 
    return "NA"; 
else  
    return results[1]; 
} 

function getDetails()//extract info form URL 
{ 
frmUpdates.txtBIStatus.value=getParam("Status"); 
frmUpdates.txtBINumber.value=getParam("BINo");  
} 

var siteUrl = 'Url to the SharePoint site'; 
SP.SOD.executeFunc("sp.js", createListItem()); 
/*if(!SP.SOD.executeOrDelayUntilScriptLoaded(createListItem, 'sp.js')){ 
LoadSodByKey('sp.js'); 
};*/ 
//LoadSodByKey('sp.js'); 


function createListItem() { 

var clientContext = new SP.ClientContext(siteUrl); 
var oList = clientContext.get_web().get_lists().getByTitle('Announcements'); 

var itemCreateInfo = new SP.ListItemCreationInformation(); 
this.oListItem = oList.addItem(itemCreateInfo); 

oListItem.set_item('IdeaRef', 'My New Item'); 
oListItem.set_item('Status', 'Hello World!'); 

oListItem.update(); 

clientContext.load(oListItem); 

clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
} 

function onQuerySucceeded() { 
alert('Item created: ' + oListItem.get_id()); 
} 

function onQueryFailed(sender, args) { 
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

</Script> 
<title>Tool</title> 
</head> 

<body onLoad="preparePage()"> 

<form name="frmUpdates"> 
<table border="5" width="444"> 
<tr> 
<td width="344" height="35" colspan="2">&nbsp;Tool</td> 
</tr> 
<tr> 
<td width="144" height="35">Bright Idea #:</td> 
<td width="300">&nbsp;&nbsp;<input type="text" name="txtBINumber" size="40"></td> 
</tr> 
<tr> 
<td width="144" height="35">Bright Idea Status</td> 
<td width="300">&nbsp;&nbsp;<input type="text" name="txtBIStatus" size="40"></td> 
</tr> 
<tr id="ExeLead"> 
<td width="144" height="35">Assign Execution Lead</td> 
<td width="300" height="35">&nbsp;&nbsp;<input type="text" name="txtExecutionLead" size="40"></td> 
</tr> 
<tr> 
<td width="144" height="35" colspan="2">Comments</td> 
</tr> 
<tr> 
<td width="444" height="150" colspan="2">&nbsp;&nbsp;<textarea rows="8" cols="48" name="txtComments" from="frmComments">Enter your comments here....</textarea></td> 
</tr> 
<tr> 
<td width="444" height="35" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Submit" name="btnSubmit" onclick="createListItem()"></td> 
</tr> 
</table> 
</form> 



</body> 

</html> 

Примечание Я использую Блокнот, чтобы написать этот код и с помощью клавиши F12 в Internet Explorer, чтобы проверить, как код работает.

ответ

0

Скачать Notepad ++ по крайней мере :)

Просто так я правильно понимаю. Доступен ли пользователь к сайту SharePoint? Если вы просто загрузите CLEAN HTML-файл (?) С некоторым javascript в общую папку и поделитесь им с пользователем (который не имеет доступа к сайту), это невозможно. SP.js загружается в SharePoint.

Если вы создаете макет страницы с этим html (внутри всех элементов SharePoint), вы также можете использовать скрипт, но пользователям по-прежнему нужен доступ к сайту и списку.

Я бы рекомендовал создать надстройку SharePoint вместо этого.

EDIT:

Я попробовал ваш код внутри контента редактор веб-части на моем сайте Dev (без головы/тела), и она работала.

Это не решит вашу проблему, но вы должны сделать кнопку click (с jQuery) на кнопке, иначе она создаст элемент списка при загрузке страницы, даже если вы указали элемент elementListItem(), когда вы нажал кнопку, это будет работать в любом случае из-за: SP.SOD.executeFunc («sp.js», yourfunc).

$("#buttonId").click(function() { 
    SP.SOD.executeFunc("sp.js", createListItem()); 
}); 

или создать новую функцию для SP.SOD.executeFunc ("sp.js", createListItem()); которые вы используете в onclick.

Вы также можете попробовать заменить

var clientContext = new SP.ClientContext(siteUrl); 

с

var clientContext = SP.ClientContext.get_current(); 

Если список находится на том же уровне, что и библиотеки страниц, то вам не нужно указывать URL.

+0

Спасибо, я тестирую его, и у меня есть полный доступ к этому сайту SharePoint. Веб-страница хранится на сайте SharePoint. Дайте мне знать, если вам нужно больше деталей. –

+0

Хорошо. Не могли бы вы просто написать SP. в консоли в инструментах dev (F12 в IE) и посмотреть, есть ли у вас какие-либо опции? – Robin

Смежные вопросы