簡體   English   中英

無法在Sharepoint 2013列表中創建新項目

[英]Unable to create new item in Sharepoint 2013 List

我正在嘗試使用淘汰賽js和REST將項目保存到SharePoint列表中。 在我的Ajax POST中,我使用了ko.toJSON。 我嘗試使用JSON.stringify,但在SharePoint列表中看不到該條目。 我可能傳遞了錯誤的參數值。 提前致謝。

我的HTML:

<link rel="Stylesheet" href="/css/default.css" />

<script type="text/javascript" src="/js/knockout-3.4.2.js"></script>
<script type="text/javascript" src="/js/jquery-3.2.1.min.js"></script>

<script type="text/javascript" src="/js/o.min.js"></script>

<form id="form1" runat="server"> 
<div class="style1"> 
<div class="codeRunner"><br/>


<h3>Tasks</h3>


<form data-bind="submit: addTask">
    Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
    <button type="submit">Add</button>
</form>

<ul data-bind="foreach: tasks, visible: tasks().length > 0">
    <li>
        <input type="checkbox" data-bind="checked: isDone" />
        <input data-bind="value: title, disable: isDone" />
        <a href="#" data-bind="click: $parent.removeTask">Delete</a>
    </li> 
</ul>

You have <b data-bind="text: incompleteTasks().length">&nbsp;</b> incomplete task(s)
<span data-bind="visible: incompleteTasks().length == 0"> - it's water time!</span>

<br/>
<button data-bind="click: save">Save</button>

</div>
</div>
</form>

我的JS:

<script type="text/javascript">

var sharepointBaseUrl = "/trp/";
var sharepointTaskListUrl = sharepointBaseUrl + "_api/lists/getbytitle('Test2')";



function Task(sharepointItem) {
    var self = this;

    self.id = sharepointItem.ID;

    self.title = ko.observable(sharepointItem.Title);
    self.isDone = ko.observable(sharepointItem.IsDone);
}



function TaskListViewModel() {
    // Data
    var self = this;
    self.tasks = ko.observableArray([]);
    self.newTaskText = ko.observable();
    self.incompleteTasks = ko.computed( function() { return ko.utils.arrayFilter(self.tasks(), function(task) { return !task.isDone() }); });

    // Operations
    self.addTask = function() {
        self.tasks.push(new Task({ Title: this.newTaskText() }));
        self.newTaskText("");
        var itemType="SP.Data.Test2ListItem";
        var addedItems=ko.toJSON({
            __metadata: itemType,
            'Title': self.newTaskText()
        });

        $.ajax({
            url: sharepointTaskListUrl + "/items", 
            type: "POST",
            headers: {
                "accept": "application/json;odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                "content-Type": "application/json;odata=verbose"
            },
            data: addedItems,
            success: function (data) {
                console.log(data);
            },
            error: function (error) {
                alert(JSON.stringify(error));
            }
        });


    };
    self.removeTask = function(task) { self.tasks.remove(task) };



    //load from SP List
    $.ajax( {
            url: sharepointTaskListUrl + "/items", 
            method: "GET",
            headers: { "Accept": "application/json; odata=verbose" },
            success: function (data) 
                     {
                         var items = data.d.results;
                         items.forEach( function(item) { self.tasks.push(new Task(item)); } );
                     },
            error: function (data) { alert("ERROR: " + data) }
     } );




}

ko.applyBindings(new TaskListViewModel());


</script>

在您的源代碼中:

    self.addTask = function() {
        self.tasks.push(new Task({ Title: this.newTaskText() }));
        self.newTaskText(""); (1)
        var itemType="SP.Data.Test2ListItem";
        var addedItems=ko.toJSON({
            __metadata: itemType,
            'Title': self.newTaskText()    (2)

在(1)中,您將清除newTaskText() 然后在(2)中將其添加到json中。

您可以更改為以下解決方案:

    self.addTask = function() {
        var task = new Task({ Title: this.newTaskText() });
        self.tasks.push(task);
        self.newTaskText("");
        var itemType="SP.Data.Test2ListItem";
        var addedItems=ko.toJSON({
            __metadata: itemType,
            'Title': task.title()

在這里,我定義了一個task變量並從中獲取標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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