2009-05-06 30 views
-1

を発生しません:私のコントローラがどのように見えるjQueryのは - 私は、次のjQueryのコードを持っているMVCコントローラのアクション

// When the document is ready, start firing our AJAX 
$(document).ready(function() { 
    function showValues() { 
     var str = $("form").serialize(); 
     $("#results").text(str); 
    } 

    $(":checkbox, :radio").click(showValues); 
    $("select").change(showValues); 
    //showValues(); 

    // Bind actions... 
    $("#navIndex a").bind("click", function(e) { updateNavIndex($(this).attr('href')); }); 
    $("#navPrevNext a").bind("click", function(e) { updateNavPrevNext($(this).attr('href')); }); 
    $("#ItemsPerPage").bind("change", function(e) { updateAll(); }); 
    $(":checkbox, :radio").bind("change", function(e) { updateAll(); }); 

    $("#navIndex a").click(function() { 
     // switch class type... 
     $("#navIndex a").removeClass('selected'); 
     $("#navIndex span").removeClass('selected'); 
     $("#navIndex a").addClass('notselected'); 
     $("#navIndex span").addClass('notselected'); 
     $(this).removeClass('notselected'); 
     $(this).addClass('selected'); 
     $(this).parent().removeClass('notselected'); 
     $(this).parent().addClass('selected'); 

     // Get navigation index... 
     var navIndex = $(this).attr('href'); 

     this.blur(); 
     return true; 
    }); 
    $("#navPrevNext a").click(function() { 
     // Get navigation index... 
     var navIndex = $(this).attr('href'); 

     this.blur(); 
     return true; 
    }); 
}); 

// Use the getJSON method to call our JsonResult action 
var retrieveProductData = function(path, productGroup, productType, itemsPerPage, pageIndex, filter, fnHandleCallback) { 
    $.getJSON(path 
      , { productGroup: productGroup } 
      , { productType: productType } 
      , { itemsPerPage: itemsPerPage } 
      , { pageIndex: pageIndex } 
      , { filter: filter } 
      , function(data) { fnHandleCallback(data); }); 
}; 

// Use the getJSON method to call our JsonResult action 
var retrieveMenuData = function(path, productGroup, productType, itemsPerPage, pageIndex, filter, fnHandleCallback) { 
    $.getJSON(path 
      , { productGroup: productGroup } 
      , { productType: productType } 
      , { itemsPerPage: itemsPerPage } 
      , { pageIndex: pageIndex } 
      , { filter: filter } 
      , function(data) { fnHandleCallback(data); }); 
}; 

// The path parameter is our JSON controller action 
function updateNavIndex(pageIndex) { 
    var filters = $("form").serialize(); 
    var productGroup = $("#valProductGroup").attr('title'); 
    var productType = $("#valProductType").attr('title'); 
    var itemsPerPage = $("#ItemsPerPage").val(); 

    retrieveMenuData("/CatalogAjaxController/UpdateNavigation" 
        , productGroup 
        , productType 
        , itemsPerPage 
        , pageIndex 
        , filters 
        , handleMenuData); 
    retrieveProductData("/CatalogAjaxController/UpdateNavigation" 
         , productGroup 
         , productType 
         , itemsPerPage 
         , pageIndex 
         , filters 
         , handleProductData); 
} 

// The path parameter is our JSON controller action 
function updateNavPrevNext(pageIndex) { 
    var filters = $("form").serialize(); 
    var productGroup = $("#valProductGroup").attr('title'); 
    var productType = $("#valProductType").attr('title'); 
    var itemsPerPage = $("#ItemsPerPage").val(); 

    retrieveMenuData("/CatalogAjaxController/UpdateNavigation" 
        , productGroup 
        , productType 
        , itemsPerPage 
        , pageIndex 
        , filters 
        , handleMenuData); 
    retrieveProductData("/CatalogAjaxController/UpdateNavigation" 
         , productGroup 
         , productType 
         , itemsPerPage 
         , pageIndex 
         , filters 
         , handleProductData); 
} 

// The path parameter is our JSON controller action 
function updateAll() { 
    var filters = $("form").serialize(); 
    var productGroup = $("#valProductGroup").attr('title'); 
    var productType = $("#valProductType").attr('title'); 
    var itemsPerPage = $("#ItemsPerPage").val(); 

    retrieveMenuData("/CatalogAjaxController/UpdateNavigation" 
        , productGroup 
        , productType 
        , itemsPerPage 
        , pageIndex 
        , filters 
        , handleMenuData); 
    retrieveProductData("/CatalogAjaxController/UpdateProducts" 
         , productGroup 
         , productType 
         , itemsPerPage 
         , pageIndex 
         , filters 
         , handleProductData); 
} 

// Ok, now we have the JSON data, we need to do something with it. I'm adding it to another dropdown. 
function handleMenuData(data) { 
    $("#otherDropDownId > option").remove(); 
    for (d in data) { 
     var item = data[d]; 
     $("#otherDropDownId").append("<option value=\"" + item.Value + "\">" + item.Text + "</option>"); 
    } 
} 

// Ok, now we have the JSON data, we need to do something with it. I'm adding it to another dropdown. 
function handleProductData(data) { 
    $("#otherDropDownId > option").remove(); 
    for (d in data) { 
     var item = data[d]; 
     $("#otherDropDownId").append("<option value=\"" + item.Value + "\">" + item.Text + "</option>"); 
    } 
} 

public class CatalogAjaxController : Controller 
{ 
    [Authorize, AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult UpdateNavigation(string productGroup, string productType, int itemsPerPage, string pageIndex, string filters) 
    { 
     int pIndex = Convert.ToInt32(pageIndex.Remove(0, 1)); 

     ProductCatalogBrowserModel myModel; 
     myModel = new ProductCatalogBrowserModel(productGroup, productType, pIndex, itemsPerPage); 

     return new JsonResult() { Data = myModel.ProductDetailMenu.ToArray() }; 
    } 

    [Authorize, AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult UpdateProducts(string productGroup, string productType, int itemsPerPage, string pageIndex, string filters) 
    { 
     int pIndex = Convert.ToInt32(pageIndex.Remove(0, 1)); 

     ProductCatalogBrowserModel myModel; 
     myModel = new ProductCatalogBrowserModel(productGroup, productType, pIndex, itemsPerPage); 

     return new JsonResult() { Data = myModel.ProductDetail.ToArray() }; 
    } 

} 

私は3アップデート機能のいずれかにブレークポイントをキャッチすることができますJSスクリプトでは、コントローラにはまったくドロップされません。何か不足していますか?

答えて

1

を受け入れます。

$.getJSON(
    url, 
    { 
     'dataVal1': data1, 
     'dataVal2': data2 
    }, 
    myCallBackHandler 
); 

しかし、これはGETリクエストに合格し、POSTが必要になる可能性があります。あなたがここに大きい使用シナリオを見つけることができます

$.ajax({ 
    url: thePath, 
    type: 'POST', 
    data: { 
     dataVal1: data1, 
     dataVal2: data2 
    }, 
    success: successHandler, 
    failure: failureHandler 
}); 

http://docs.jquery.com/Ajax/jQuery.ajax#options

+0

[OK]を

あなたは、基本的なAjax呼び出しでこれを行うことができます。私は思う*私は理解するが、この呼び出しをどこに置くべきか正確には分からない。私はそれが "var retrieveXYZ"定義に入るはずだと推測していますか? –

+0

あなたのコードを見ると、私はそう言うでしょう。$ .ajax()呼び出しはあなたの異なる検索関数に入ります。 –

+0

"タイプは不明"というエラーが出ています。これは私の検索コードで行ったことです: var retrieveMenuData = function(パス、productGroup、productType、itemsPerPage、pageIndex、filter、fnHandleCallback){ $ .ajax(パス 、タイプ 、{productGroup:productGroup、productType:productType 、itemsPerPage:itemsPerPage、pageIndex:pageIndex、filter:filter} 、関数(データ){fnHandleCallback(データ);}); }; その後、私の更新方法で私が持っている:retrieveMenuData( "/ CatalogAjaxController/UpdateNavigation" 、 "ポスト" 、{ "productGroup" :productGroup は、 "でProductType":。でProductType ... –

0

あなたのJSが取得され、コントローラのアクションにのみ、私はあなたがあなたのAjaxの引数を構造化する必要がある方法を逃していると思いますPOST

関連する問題