2016-08-17 2 views
0

Что я хочу сделать, это довольно просто. Я хочу сделать вызов AJAX для определенного класса html, так что всякий раз, когда загружается страница html, jquery сделает вызов AJAX для этого конкретного html div class.Как сделать вызов AJAX для элемента html?

Например:

<div class="targeted"></div> 

В JQuery:

$('.targeted') 

Я знаю, что синтаксис, чтобы сделать вызов AJAX является:

$.ajax({ 
     type: "GET", 
     url: "/api/something", 
     success: function(data) { 
      console.log(data); 
     } 
     }); 

Но как я могу осуществить эту AJAX звоните в $('.targeted') всякий раз, когда страница загружается?

Благодаря

+0

Вы говорите, что хотите поместить содержимое результата вызова AJAX в свой '.targeted' div? –

+2

Что вы хотите с помощью ajax-звонка? Получение представления и заполнение целевого html? – mayk

+0

@mayk Да, всякий раз, когда загрузка страницы ajax get будет выполняться на 'target' div – airsoftFreak

ответ

1

Если вы имеете в виду вы хотите отобразить результат AJAX вызова в элементе, вы обновляете элемент из в success обратного вызова:

$.ajax({ 
    type: "GET", 
    url: "/api/something", 
    success: function(data) { 
     $('.targeted').html(data); 
    } 
}); 

Этого пример предполагает

  1. Вы хотите заменить содержимое элемента (а не добавлять к нему); больше опций in the jQuery API.

  2. data будет HTML. Если это обычный текст, используйте .text(data), а не .html(data). Если это структурированные данные, то, конечно, вам нужно будет сделать больше работы, чтобы поместить информацию в нужную форму.

+0

Мне действительно нужно добавить данные в html, разве это не лучшая практика? – airsoftFreak

+0

@airsoftFreak: Я не понимаю, что вы просите в этом комментарии. В комментариях к вопросу, который вы сказали, «ajax get будет выполняться на целевом div», что не имеет никакого смысла. Если вы хотите, чтобы данные поступали в div, тогда вы так и делаете. Если нет, обновите вопрос, чтобы он был прояснен. –

0

Вы можете сделать:

$(function() { 
    $.ajax({ 
    type: "GET", 
    url: "/api/something", 
    }) 
    .done(function(data) { 
    $('.targeted').text(data); 
    }); 
}); 
0
window.onload = function() { 
    yourFunction(); 
}; 

function yourFunction(){ 
$.ajax({ 
    type: "GET", 
    url: "/api/something", 
    success: function(data) { 
     $('.targeted').html(data); 
    } 
}); 
} 

ИЛИ Drectly вы можете передать этот метод в документе готовый он будет выполняться автоматически

$(document).ready(function(){ 
//This will execute onload oof your web page what you required 
    yourFunction(); 
}) 

function yourFunction(){ 
$.ajax({ 
    type: "GET", 
    url: "/api/something", 
    success: function(data) { 
     $('.targeted').html(data); 
    } 
}); 
} 
+0

Почему вы хотите обернуть 'window.onload' в' document.ready'. Вы можете использовать любой из них вместо – zamil

+0

Ya это было предложение, и я обновил свой код, и теперь я думаю, что оба способа могут работать схожими, но стиль исполнения отличается – mean

+0

оба работают по-разному. 'document.ready' выполняется после загрузки DOM,' window.onload' выполняется после загрузки содержимого. означает, что 'window.onload' выполняется немного позже, чем' document.ready' – zamil

0

Ибо, когда страница загружена, вы использование:

$(document).ready(function() { 
    console.log("ready!"); 
}); 

Внутри документа готовы, вы поместите свой вызов AJAX. Если в результате вы получите в формате JSON, вам необходимо включить DATATYPE, а так:

$.ajax({ 
    method: "GET", 
    url: "/api/something", 
    dataType: "json" 
}) 
    .done(function(data) { 
    $('.targeted').append(JSON.stringify(data)); 
    }); 

Если результат не JSON, то вы можете просто добавить данные.

Также отметим: jqXHR.success(), jqXHR.error() и jqXHR.complete() обратные вызовы удаляются от JQuery 3.0. Вместо этого вы можете использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().

См. the jQuery documentation.

0

вы можете использовать JQuery load как это:

$(".targeted").load('/api/something'); 

если вы хотите ждать до тех пор пока после загрузки страницы, оберните его windowload так:

$(window).load(function() { 
    $(".targeted").load('/api/something'); 
}); 

P.S. $(window).load(..) и $(".class").load(url) - две разные функции.

Смежные вопросы