簡體   English   中英

使用SPServices.js更新列表項后重定向到列表視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM