2009-07-16 2 views
0

Мне нужно получить содержимое с внешней страницы и передать его в качестве аргумента функции. Я просмотрел метод url() в документации JQuery, но, похоже, его можно использовать только для вставки внешнего содержимого в div или какой-либо другой элемент HTML.Помощь JQuery - AJAX load()

В основном то, что мне нужно сделать, это:

// I need to insert external page's content into the cont variable, how to do that? 
var cont; 
// so I can pass it to the bt() function (it's a tooltip plugin) 
$('.class').bt(cont, { 
    fill: '#2a4d6b', 
    cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
}); 

Может кто-нибудь сказать мне, если что-то подобное, что это возможно?

ответ

1

Вы хотите использовать .get (http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype) insetad load. В качестве аргумента требуется функция обратного вызова. Ниже загрузится ссылка и отобразится в предупреждении.

$.get('http://your.website.com/page.html', 
    function (data) { alert(data) }); 

ваш пример переписано:

$.get('http://your.website.com/page.html', 
     function (data) { setClass(data); }); 

function setClass(cont) { 
    $('.class').bt(cont, { 
     fill: '#2a4d6b', 
     cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
    }); 
} 
+0

Вы, конечно, можете получить различный контент для каждого .class, но это будет наименее эффективный способ сделать это. Вы не хотите делать все из них в цикле, потому что было бы разумнее просто устанавливать контент, когда страница изначально загружена (нет ajax), и если вы хотите загрузить контент при загрузке всплывающей подсказки, тогда он будет вероятно, будет плохой пользовательский интерфейс (ожидание топа, пока загружается контент). – Prestaul

+0

Спасибо, проблема в том, что есть много подсказок, и большинство из них динамически генерируются с других страниц, поэтому AJAX - единственный способ. Загрузка их с помощью PHP сделает загрузку страницы намного медленнее. Введенный текст включает текст «Загрузка ...» во всплывающей подсказке во время загрузки внешнего текста. И это не занимает слишком много времени, 1-2 секунды, и всплывающая подсказка загружается. –

2
$.load("http://someplace", function(data){ 
    $('.class').bt(data, { 
     fill: '#2a4d6b', 
     cssStyles: {color: 'orange', fontWeight: 'bold', width: 'auto'} 
    }); 
}); 

нет?

также внешним, как внешний? вы не можете получить что-либо из другого домена, в противном случае это будет работать

+0

Согласитесь, элемент оленьей кожи должен быть частью йота –

+1

Это будет работать, но, возможно, менее эффективно, чем .get, который предназначен для использования таким образом. Загрузка должна использоваться для загрузки содержимого элемента, обратный вызов там, чтобы вы могли выполнить javascript для загруженных данных. –

+0

Это в том же домене. Можно ли использовать относительный URI? Например, контроллер/действие/id/53423? –

-1

Должно быть возможно. Что должно Работа (я не пробовал это сам) - это сделать скрытый IFRAME на странице. Затем установите для src URL-адрес, который вам нужно получить, затем используйте DOM для доступа к содержимому IFRAME. Прокомментируйте это, если вам это кажется непонятным.

+0

Вы не использовали jQuery у вас –

+0

Это то, для чего AJAX; iframe не требуется. Кроме того, если кто-то думает, что он будет работать для междоменного контента, это тоже неправильно. –

+0

Я использовал jQuery широко, просто не библиотеку AJAX. И если вы читаете оригинальную запись, она не говорит: «Может ли кто-нибудь сказать мне, возможно ли что-то подобное» IN JQUERY *? »; он просто хотел узнать, возможно ли это (и это была та часть, на которую я отвечал). – machineghost