2013-03-16 134 views
0

您好一直在使用ajax在mvc上進行簡單的搜索。我是一個有點這個錯誤感到困惑,因爲AJAX可以與AJAX調用控制器,但是當控制器返回一個值到JS它給我的error500服務器響應狀態爲500從控制器返回GET

這裏溝通是我的代碼:

$.ajax({ 
     type: "GET", 
     url: 'SearchCustomer', 
     data: { 'name': name, 'id': customerId }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      alert(data); 
      $(data).each(function() { 

      }); 
     } 
    }); 

然後我的控制器

public JsonResult SearchCustomer(string name, string id) 
     { 

      var customers = tr.SearchCustomers(name, id); 
      return new JsonResult() { Data = customers, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 

     } 

-ive去過很多的解決方案之前就已經提出這個問題,也嘗試過,但令人驚訝並沒有工作..所以幫助! :P歡呼

回答

1

您應該擺脫contentType設置,因爲您沒有發送JSON。此外,您的控制器操作的網址看起來不太有效。如果您使用默認路由,它通常應該看起來像{controller}/{action}。我會建議你使用Url助手來生成它。

而且在你的控制器動作,您已經使用了Data屬性來發送的結果,所以這是你應該在你的成功回調以通過使用循環什麼:

$.ajax({ 
    url: '@Url.Action("SearchCustomer")', 
    type: 'GET', 
    data: { 'name': name, 'id': customerId }, 
    success: function (result) { 
     $(result.Data).each(function() { 

     }); 
    } 
}); 

你應該尋找的是另一件事你是從你的控制器動作發送到視圖模型:

var customers = tr.SearchCustomers(name, id); 

目前尚不清楚這是什麼客戶收集的類型,但你應該確保它是JSON序列化。這意味着Customer模型不應該在對象圖中包含任何循環引用。如果是這樣,您將不得不排除它們,理想情況下通過使用視圖模型並僅發送視圖所需的屬性。

+0

感謝通過使用視圖模型它像一個魅力工作!因爲你懷疑客戶不是JSON序列化,這就是爲什麼我得到錯誤!非常感謝Darin – 2013-03-17 01:41:07

+0

還有一件事我注意到我的網址沒有在正確的控制器/方法形式中,但是如果我以這種形式創建了網址就像 控制器/控制器/方法,這就是爲什麼我必須刪除控制器 - 坦率地說,我沒有知道爲什麼會發生這種情況 – 2013-03-17 03:23:16

相關問題