REST POST в sharepoint не публикует данные - PullRequest
0 голосов
/ 13 июня 2018

Мне удалось заставить работать точку обмена GEST REST, но я борюсь с POST.

У меня есть этот код:

function send_idea() {  
    //Fetch the values from the input elements  
    var idea_title = document.getElementById("idea_title").value;
    var idea_description = document.getElementById("idea_description").value;
    var listName = "Production_Request_Idea";

    $.ajax({  
        method: "POST",
        url: "URLTOSITE/_api/web/lists/GetByTitle('Production_Request_Idea')/items", //name of the LIST
        dataType: "json",
        data: {
            Title: idea_title,  //I did try to put Title in "Title" but still not posting
            Description: idea_description 
        },
        headers: {  
            accept: "application/json;odata=verbose", //It defines the Data format   
            contentType: "application/x-www-form-urlencoded" 
        },  
        success: function(data) {  
            swal("Item created successfully", "success"); // Used sweet alert for success message  
        },  
        error: function(error) {  
            console.log(JSON.stringify(error));  
        }  
    })  
}

html:

  <abc runat="server" data-aos="zoom-out" data-aos-once="true" method="post" enctype="text/plain" id="sendIdea">
     <label for="title">Title</label>
     <input type="text" id="idea_title" name="title">
     <label for="idea_description" >Description</label>
     <textarea id="idea_description" name="description"></textarea>
     <p>benefits:</p>
     <div class="benefits_container" >
        <div class="benefit" >
           <input id="quality_container" type="checkbox" name="quality">
           <svg class="benefit_icon svgColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
      some vector graphic
           </svg>
           <p>quality</p>
        </div>
        <div class="benefit" >
           <input id="savings_container" type="checkbox" name="savings">
           <svg class="benefit_icon svgColor" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 50 50" version="1.1">
              some vector graphic
           </svg>
           <p>savings</p>
        </div>
        <div class="benefit" id="compliance_container">
           <input id="compliance_container" type="checkbox" name="compliance">
           <svg class="benefit_icon svgColor" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 50 50" version="1.1">
              some vector graphic
           </svg>
           <p>compliance</p>
        </div>
     </div>         
     <button type="submit" onclick="send_idea()">send</button>
  </abc>

Он идет в заголовки, затем обновляется, не углубляясь, поэтому я предполагаю, что произошла ошибкакоторые заставляют браузер обновлять сайт.

Со вчерашнего дня я пытался это выяснить, но безрезультатно.

Я нашел только 2 примера в стеке, и они мне не помогли.

РЕДАКТИРОВАТЬ: я изменяю тег формы на что-то случайное, просто как тест, но теперь, когда submit привязывается к кнопке, а не формирует еепо крайней мере доходит до того, что отправляет мне сообщение об ошибке 2130575251 - нет прав, хотя у меня полный контроль ..

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вот пара вещей, которые я заметил, почему запрос не будет работать.При выполнении запроса POST данные должны отправляться в виде JSON, и они должны включать объект метаданных, который указывает тип.Кроме того, заголовок дайджеста запроса должен быть включен.

Если вы все еще испытываете обновление страницы, добавьте оставшуюся часть кода.

function send_idea() {  
    //Fetch the values from the input elements  
    var idea_title = $("#idea_title").val();
    var idea_description = $("#idea_description").val();
    var listName = "Production_Request_Idea";

    //Include the metadata object and type
    var data = {
        "__metadata": {
            type: "SP.Data.Production_x005f_Request_x005f_IdeaListItem"
        },
        Title: idea_title,
        Description: idea_description
    };

    $.ajax({  
        method: "POST",
        url: _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/GetByTitle('Production_Request_Idea')/items", //name of the LIST
        data: JSON.stringify(data),
        headers: {  
            accept: "application/json;odata=verbose", //It defines the Data format   
            "content-type": "application/json;odata=verbose", //Sends as JSON
            "X-RequestDigest": $("#__REQUESTDIGEST").val() //Include request digest value
        },  
        success: function(data) {  
            swal("Item created successfully", "success"); // Used sweet alert for success message  
        },  
        error: function(error) {  
            console.log(JSON.stringify(error));  
        }  
    });
}
0 голосов
/ 13 июня 2018

Здесь я изменил некоторые строки. Пожалуйста, попробуйте ниже с PATCH метод .

Это один из рабочих кодов для меня.

Пожалуйста, свяжитесь со мной по любому вопросу.

function send_idea() {  
     
    var idea_title = document.getElementById("idea_title").value;
    var idea_description = document.getElementById("idea_description").value;
    var listName = "Production_Request_Idea";
    var item = {
                 "__metadata": { "type": idea_title},
                 "Value": idea_description
     };
    $.ajax({  
        method: "PATCH",
        url: "URLTOSITE/_api/web/lists/GetByTitle('Production_Request_Idea')/items",
        contentType: "application/json;odata=verbose",
        data: JSON.stringify(item),
        headers: {
                                "Accept": "application/json; odata=verbose",
                                "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                                "If-Match": "*"
        }, 
        success: function(data) {  
            swal("Item created successfully", "success");  
        },  
        error: function(error) {  
            console.log(JSON.stringify(error));  
        }  
    })  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...