вкладки пользовательского интерфейса jQuery: как отправить ajax-запрос с данными post?
Из вкладок пользовательского интерфейса jQuery:
<script>
$(function() {
$( "#tabs" ).tabs({
ajaxOptions: {
error: function( xhr, status, index, anchor ) {
$( anchor.hash ).html("Couldn't load this tab.");
}
}
});
});
</script>
<div class="demo">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Preloaded</a></li>
<li><a href="ajax/content1.html">Tab 1</a></li>
<li><a href="ajax/content2.html">Tab 2</a></li>
</ul>
<div id="tabs-1">
<p>Proin elit arcu, rutrum commodo.</p>
</div>
Как отправитьajax-запрос с post-данными в этом случае (возможно, через ajaxOptions).
Я не знаю, как изменить URL-адреса вкладок для отправки данных post, например:
<li><a href="ajax/content1.html(country:1,city:35)">Tab 1</a></li>
<li><a href="ajax/content2.html(code:'aa')">Tab 1</a></li>
Спасибо!
Отредактировано :
В jQuery это:
$.load("some_url",{country: countryValue});
Таким образом, у меня есть заголовок post (country) и значение post (countryValue). Как сделать то же самое с каждой вкладкой?
1 ответ:
Чтобы сделать метод AJAX POST, вы можете добавить
type
к объектуajaxOptions
. Чтобы собрать данные для записи, можно воспользоватьсяjQuery.data()
, а затем скрыть параметры записи в Якоре.<div id="tabs"> <ul> <li><a href="#tabs-1">Preloaded</a></li> <li><a href="ajax/content1.html">Tab 1</a></li> <li><a href="ajax/content2.html" data-country="1" data-city="35">Tab 2</a></li> <li><a href="ajax/content3-slow.php">Tab 3 (slow)</a></li> <li><a href="ajax/content4-broken.php">Tab 4 (broken)</a></li> </ul> <div id="tabs-1"> <p>Proin elit arcu, rutrum commodo.</p> </div>
И JavaScript:
var postData = {}; $("#tabs").tabs({ select: function(event, ui) { postData = { country: parseInt($(ui.tab).data('country')), city: parseInt($(ui.tab).data('city')); }; }, ajaxOptions: { type: 'POST', data: postData, error: function(xhr, status, index, anchor) { $(anchor.hash).html("Couldn't load this tab. We'll try to fix this as soon as possible. " + "If this wouldn't be a demo."); } } });
Попробуйте: JSFiddle
Если ваши параметры изменяются для каждой ссылки, вам придется придумать способ узнать, какие параметры вы ищете. Вы можете получить индекс вкладки в событии
select()
с помощьюui.index
и использоватьswitch
для получения различных параметров для каждого случая. По общему признанию, это решение не очень красиво, но оно может сработать.