[英]Redirect to list view after updating list item using SPServices.js
我創建了一個自定義表單來提交列表項並附加多個附件。
在將所有附件都附加到列表項之后,需要將用戶重定向到默認列表視圖。 我嘗試添加window.location.href ='default List url',但在添加附件時會重定向。 它適用於小文件,但對於大文件,僅添加了1個附件。 以下是代碼段:HTML:
var ListTitle = "SubTask"; $( document ).ready(function() { //$('#attachment').multifile(); $("#NewSaveItem").click(function() { CreateNewItem(); }); }); function CreateNewItem() { var data = { __metadata: { 'type': "SP.Data.SubTaskListItem" }, Title: $('#Title').val() }; $.ajax({ //_spPageContextInfo.webAbsoluteUrl get current SharePoint site url url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/GetByTitle('" + ListTitle + "')/Items", type: "POST", headers: { "accept": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val(), "content-Type": "application/json;odata=verbose" }, // to make sync calls. async: false, data: JSON.stringify(data), success: function (data) { if (data.d.ID != undefined && data.d.ID > 0){ //Uploads files to SharePoint List item UploadFileToListItem(data.d); } else { console.log('Item added successfully'); } }, error: function (error) { console.log('Problem saving data'); } }); // window.location.href = 'https://connect.sharepoint.com/sites/SpApps/Lists/SubTask/'; } //Once the item is created now let's try to upload documents to SharePoint list item. function UploadFileToListItem(data) { var element = document.getElementById("attachment"); lastFileName = element.files[element.files.length - 1].name; for (var i = 0; i < element.files.length; i++) { var file = element.files[i]; uploadFile(data, file); } alert('Done'); window.location.href = 'https://connect.sharepoint.com/sites/SpApps/Lists/SubTask/'; } //uploads single file at a time. function uploadFile(data, file) { var getFileBuffer = function (file) { var deferred = $.Deferred(); var reader = new FileReader(); reader.onload = function (e) { deferred.resolve(e.target.result); } reader.onerror = function (e) { deferred.reject(e.target.error); } reader.readAsArrayBuffer(file); return deferred.promise(); }; getFileBuffer(file).then(function (buffer) { var binary = ""; var bytes = new Uint8Array(buffer); var i = bytes.byteLength; while (i--) { binary = String.fromCharCode(bytes[i]) + binary; } var fileName = file.name; var error = '' $().SPServices({ operation: "AddAttachment", async: false, listName: ListTitle, listItemID: data.Id, fileName: fileName, attachment: btoa(binary), completefunc: function (xData, Status) { console.log(file.name + " uploaded"); } }); }); }
<table align="left" border="1" cellpadding="0" cellspacing="0" > <tbody> <tr> <td valign="top"> <h3> Name</h3> </td> <td valign="top" style="padding:9px;"> <input type="text" value="" maxlength="255" id="Title" title="Name" style="width: 96%;" ms-spellcheck-true"> </td> </tr> <tr > <td > <span style="font-family: " segoe ui" ,sans-serif; color: #444444"> Click here to attach file </span> <div id="attachFilesHolder "> <input type="file" id="attachment" name="FileUpload" multiple/> </div> </td> <td> </td> </tr> </table> <div> <input name="SaveItem" style=" height: 40px; font-size: 15px;" id="NewSaveItem" accesskey="O" onclick="" type="button" value="Click here to submit " target="_self"> </div>
請讓我知道我要去哪里錯了。
在SPServices完整功能中定義一個uploadCount變量,然后在將文件上傳到列表項時,檢查上載框中的文件計數是否等於上載計數,然后使用SetInterval進行如下跟蹤:
var ListTitle = "SubTask";
var fileCount=0;
var uploadCount=0;
$( document ).ready(function() {
//$('#attachment').multifile();
$("#NewSaveItem").click(function() {
CreateNewItem();
});
});
function CreateNewItem() {
var data = {
__metadata: { 'type': "SP.Data.SubTaskListItem" },
Title: $('#Title').val()
};
$.ajax({
//_spPageContextInfo.webAbsoluteUrl get current SharePoint site url
url: _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/GetByTitle('" + ListTitle + "')/Items",
type: "POST",
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"content-Type": "application/json;odata=verbose"
},
// to make sync calls.
async: false,
data: JSON.stringify(data),
success: function (data) {
if (data.d.ID != undefined && data.d.ID > 0){
//Uploads files to SharePoint List item
UploadFileToListItem(data.d);
}
else
{
console.log('Item added successfully');
}
},
error: function (error) {
console.log('Problem saving data');
}
});
// window.location.href = 'https://connect.sharepoint.com/sites/SpApps/Lists/SubTask/';
}
//Once the item is created now let’s try to upload documents to SharePoint list item.
function UploadFileToListItem(data) {
var element = document.getElementById("attachment");
lastFileName = element.files[element.files.length - 1].name;
//file count
fileCount=element.files.length;
for (var i = 0; i < element.files.length; i++) {
var file = element.files[i];
uploadFile(data, file);
}
//alert('Done');
setInterval(function(){
if(fileCount!=0&&fileCount==uploadCount){
window.location.href = 'https://connect.sharepoint.com/sites/SpApps/Lists/SubTask/';
}
}, 1000);
}
//uploads single file at a time.
function uploadFile(data, file) {
var getFileBuffer = function (file) {
var deferred = $.Deferred();
var reader = new FileReader();
reader.onload = function (e) {
deferred.resolve(e.target.result);
}
reader.onerror = function (e) {
deferred.reject(e.target.error);
}
reader.readAsArrayBuffer(file);
return deferred.promise();
};
getFileBuffer(file).then(function (buffer) {
var binary = "";
var bytes = new Uint8Array(buffer);
var i = bytes.byteLength;
while (i--) {
binary = String.fromCharCode(bytes[i]) + binary;
}
var fileName = file.name;
var error = ''
$().SPServices({
operation: "AddAttachment",
async: false,
listName: ListTitle,
listItemID: data.Id,
fileName: fileName,
attachment: btoa(binary),
completefunc: function (xData, Status) {
console.log(file.name + " uploaded");
uploadCount++;
}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.