Отдых возвращает список элементов, но ответ пустым в SP2013

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/90325

  •  10-12-2019
  •  | 
  •  

Вопрос

Я ооочень разочарован ...

У меня есть функция jQuery, чтобы схватить данные списка, и когда я регистрирую «данные», я вижу полный {D} с помощью A {Revise}, удерживающих все элементы списка.Но когда я бегу через функцию $ .each, чтобы получить строку, которую я могу вернуться, когда я журнал RSP, отладчик говорит «пустая строка».

Вот моя функция:

function get_news(){
    var rsp = '';
    $.ajax({
        url: "http://edrdbdev/_api/web/lists/GetByTitle('Latest News')/items",
        type: "GET",
        headers: { "accept" : "application/json;odata=verbose" },
        success: function(data){
            console.log(data);
            $.each(data.d.results, function(index, item){
                rsp +=  "<p>" + item.Title + "</p>"
            });
        },
        error: function(error){
            rsp = JSON.stringify(error);
        }
    });

    console.log(rsp);
    return rsp;
} // end get_props function
.

Я схожу с ума и очень ценит любые советы или исправления.Заранее спасибо.

Это было полезно?

Решение

$.ajax perform an asynchronous HTTP (Ajax) request. That means sending the request (or rather receiving the response) is taken out of the normal execution flow.

In your example, return rsp is executed before the function you passed as success callback was even called.

Solutions

There are basically two ways how to solve this:

  • Make the AJAX call synchronous.
  • Restructure your code to work properly with callbacks.

Please refer How to return the response from an AJAX call? for a more details

Below is demonstrated the modified version with callback usage:

function get_news(result){
    var rsp = '';
    $.ajax({
        url: "http://edrdbdev/_api/web/lists/GetByTitle('Latest News')/items",
        type: "GET",
        headers: { "accept" : "application/json;odata=verbose" },
        success: function(data){
            console.log(data);
            $.each(data.d.results, function(index, item){
                rsp +=  "<p>" + item.Title + "</p>"
            });
            result(rsp);    
        },
        error: function(error){
            result(JSON.stringify(error));
        }
    });    
} 



//Usage
get_news(function(content){
    console.log(content);
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top