2011-07-23 86 views
1

我有一個MVC 3應用程序使用jQuery AJAX來觸發控制器操作以返回部分視圖。MVC 3控制器無法識別jQuery傳回的JSON AJAX

的客戶端代碼:

function getCustomerList(searchCriteria) { 
    $.ajax({ 
     url: 'Home/GetCustomerList', 
     type: 'POST', 
     data: '{searchString:"' + searchCriteria + '"}', 
     success: function (result) { 
      $("#customerTabBody").html(result); 
     } 
    }); 
}; 

的控制器代碼:

[HttpPost] 
public ActionResult GetCustomerList(string searchString) 
{ 
    var custService = new CustomerViewModels(); 
    var custListVM = custService.GetSearchList(searchString); 

    return PartialView("GetCustomerList", custListVM); 
} 

當我火了客戶端的jQuery我可以通過螢火看到搜索字符串被髮送,並且出現正確的格式。下面是Firebug的顯示了帖子消息:

{搜索字符串: 'AR'}

和Firebug是能夠正確地解析JSON。如果我在控制器代碼中放置一個斷點並且測試searchString參數的值爲NULL。但是,如果我只是硬編碼的JSON:

function getCustomerList(searchCriteria) { 
    $.ajax({ 
     url: 'Home/GetCustomerList', 
     type: 'POST', 
     data: {searchString:'ar'}, 
     success: function (result) { 
      $("#customerTabBody").html(result); 
     } 
    }); 
}; 

它完美和控制器參數無誤。

我做錯了什麼,當我參數化我的JSON字符串失敗?

感謝

回答

1

嘗試這樣的:

function getCustomerList(searchCriteria) { 
    $.ajax({ 
     url: 'Home/GetCustomerList', 
     type: 'POST', 
     data: { searchString: searchCriteria }, 
     success: function (result) { 
      $('#customerTabBody').html(result); 
     } 
    }); 
} 

這將確保發送到控制器的數據正確網址編碼。此外,您還沒有展示如何/在哪裏調用這個getCustomerList函數,但如果它是在點擊某個錨點或按鈕時,請確保您也取消了默認操作。

+0

民謠 - 我們贏了!謝謝達林 – BKahuna

+0

奇怪的是,StackOverflow讓你等待大約12分鐘,然後才能將答案標記爲正確。 – BKahuna