Функция jQuery не выполняется с новым параметром - PullRequest
0 голосов
/ 01 декабря 2019

Моя функция работала как положено, но затем я добавил в функцию дополнительный параметр. Я хочу связать разные файлы XML с разными элементами моего HTML. Вот как я пытался это сделать:

function request(){
 rssRequest();
rssRequest2();
}
    function rssRequest(){
         let url = "https://news.google.com/rss?x=1571747254.2933&hl=en-US&gl=US&ceid=US:en";
                let idContent = "world";
                $.ajax(url, {
                        method: "GET",
                        type: 'xml',
                        success: useContent($, idContent)
                     }
            )
        }

        function useContent(xmlContent, id){
            let $items = $(xmlContent).find("item");

                $items.each(function(){
                    let title = $(this).find('title').text();
        let h3 = $("<'h3'>" +title+ "</'h3'>");
        article.append(h3)
        $("#"+id).append(article)
            })
        }

Добавляя предупреждение в мой код, я обнаружил, что код после $items.each(function(){ не выполняется. Как я могу выполнить это?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2019

Вы звоните useContent() до того, как произойдет запрос AJAX. Таким образом, функция не получает правильные параметры.

Мое решение для решения проблемы состоит в том, чтобы использовать анонимную функцию для передачи правильных аргументов.

function rssRequest() {
  let url =
    "https://news.google.com/rss?x=1571747254.2933&hl=en-US&gl=US&ceid=US:en"
  let idContent = "world"
  $.ajax(url, {
    method: "GET",
    type: "xml",
    success: function(content) {
      useContent(content, idContent)
    }
  })
}
0 голосов
/ 01 декабря 2019

Вам не хватает точки с запятой и закрывающей скобки в $ .ajax ({..});(в конце, непосредственно перед функцией useContent). Ваш код должен выглядеть так:

let url = "https://news.google.com/rss?x=1571747254.2933&hl=en-US&gl=US&ceid=US:en";

let idContent = "world";

$.ajax(url, {
    method: "GET",
    type: 'xml',
    success: useContent($, idContent)
});

function useContent(xmlContent, id){
    let $items = $(xmlContent).find("item");

    $items.each(function(){
        let title = $(this).find('title').text();
        let h3 = $("<'h3'>" +title+ "</'h3'>");
        article.append(h3);
        $("#"+id).append(article);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...