Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Daniel Rogers 134 posts 712 karma points
    Oct 25, 2019 @ 06:31
    Daniel Rogers
    0

    Tabs using jquery and ajax

    I have three tabs that I are trying to get to load there own partial views when selected.

    One of the tabs relies on details from the previous tab before being displayed.

    I are trying to get the 2nd tab to display a partial view via jqery when the tab is clicked.

    jqery looks like this

    function TabItemClicked(a, action) {
    
        var container = $(a).parents('div.tabs');
        var resultDiv = $($(a).attr('href'), container);
    
        $.ajax({
            type: "POST",
            url: action,
            data: {},
            success: function(response) {
                resultDiv.html('');
                resultDiv.html(response);
            }
        });
    }
    

    tab structure as below

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
    @using IBDModels.Models.IBDCustomComponentModels;
    @using IBDControllers.Controllers;
    @using IBDModels.Models;
    
    @{
    
    <div id="tabs">
        <ul>
            <li>
                <span>
                    <a href="#tabs-1">
                        <img class="Cart-tabs ui-tabs-nav cart-img" />
                        Cart Products
                    </a>
                </span>
            </li>
    
            <li>
                    <span class="Cart-tabs ui-tabs-nav">
                        <a onclick="TabItemClicked(this,'@Url.Action("BillingDetails", "IBDCartSurface")')" href="#tabs-2">
                            <img class="Cart-tabs ui-tabs-nav billing-img" />
                            Billing
                        </a>
                    </span>
                </li>
                <li>
                    <span class="Cart-tabs ui-tabs-nav">
                        <a href="#tabs-3">
                            <img class="Cart-tabs ui-tabs-nav checkout-img" />
                            Submit Order
                        </a>
                    </span>
                </li>
    
        </ul>
    
    
        <div id="tabs-1">
            @Html.Partial("IBDShoppingCart/IBD Cart Contents")
        </div>
            <div id="tabs-2">
            </div>
            <div id="tabs-3">
                @Html.Partial("IBDShoppingCart/IBD Order Submit")
            </div>
    </div>
    }
    

    controller

        public ActionResult BillingDetails()
        {
            IBDBillingAddressModel Model = new IBDBillingAddressModel();
            var currentBasket = new basketItem();
    
            Model = currentBasket.GetCart().BillingAddress;
            return PartialView("IBDShoppingCart/IBD Billing Details", Model);
        }
    

    So the controller is being triggered. But the partial view "IBD Billing Details" is not being displayed.

    if I change

            <div id="tabs-2">
            </div>
    

    to

            <div id="tabs-2"> Hello
            </div>
    

    the hello is displayed only

    Update I have established this error in the google console

    "Failed to load resource: the server responded with a status of 500 (Internal Server Error)"

    Note: I are running this on a local machine.

  • Daniel Rogers 134 posts 712 karma points
    Oct 25, 2019 @ 13:48
    Daniel Rogers
    100

    Solved

    changed

            resultDiv.html('');
            resultDiv.html(response);
    

    to

            $(resultDiv.selector).html(response);
    
Please Sign in or register to post replies

Write your reply to:

Draft