【问题标题】:jQuery UI tabs: how to send ajax request with post data?jQuery UI 选项卡:如何发送带有发布数据的 ajax 请求?
【发布时间】:2011-11-28 19:28:13
【问题描述】:

来自jQuery UI tabs

<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 请求(可能通过 ajaxOptions)。

我不知道如何修改tabs urls来发送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});

所以我有帖子标题(国家)和帖子价值(国家价值)。 如何对每个选项卡执行相同操作?

【问题讨论】:

    标签: jquery-ui jquery jquery-ui-tabs


    【解决方案1】:

    要使 AJAX 方法 POST,您可以将 type 添加到 ajaxOptions 对象。要为帖子收集数据,您可以利用jQuery.data(),然后将 POST 参数隐藏在锚点中。

    <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

    如果您的每个链接的参数都发生了变化,您必须想出一种方法来了解您正在寻找哪些参数。您可以使用ui.index 获取select() 事件中选项卡的索引,并使用switch 为每种情况获取不同的参数。诚然,这个解决方案不是很漂亮,但它可以工作。

    【讨论】:

    • 好的,但是如何将指定的帖子数据插入到指定的选项卡(如我的示例中)
    • @VitaliPonomar:查看我的更新。该解决方案不是很“漂亮”,但您可以对其进行调整,直到它适合您为止。
    • 你确定有post headers:在a.href你写data-country,但是在postData你写country?但无论如何,谢谢 - 我会在我的代码中尝试一下。
    • @VitaliPonomar:是的,它有效。 data- 自动添加;这是jQuery.data() 功能使用的前缀。
    • @VitaliPonomar:如果您正在查找查询字典,那么您确定要发布吗?也许您应该只使用常规 GET(这会将数据放在查询字符串中:page.php?country=1&amp;city=35)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多