C# ASP.NET MVC对控制器的AJAX调用不返回任何数据

C# ASP.NET MVC对控制器的AJAX调用不返回任何数据,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我正在尝试使用AJAX调用调用ASP.NET MVC控制器。基本上,我想根据从下拉列表中选择的ID返回客户详细信息。在调试时,控制器被命中并以JSON格式返回数据,但在调试javascript时,它永远不会成功、失败或出错 以下是我正在使用的代码: 视图: $(文档).ready(函数(){ $(“#CustomerId”)。选择2({ 占位符:“选择客户” }); $(“#CustomerId”).change(函数(){ var param=$(“#CustomerId选项:选中”).va

我正在尝试使用AJAX调用调用ASP.NET MVC控制器。基本上,我想根据从下拉列表中选择的ID返回客户详细信息。在调试时,控制器被命中并以JSON格式返回数据,但在调试javascript时,它永远不会成功、失败或出错

以下是我正在使用的代码:

视图:


$(文档).ready(函数(){
$(“#CustomerId”)。选择2({
占位符:“选择客户”
});
$(“#CustomerId”).change(函数(){
var param=$(“#CustomerId选项:选中”).val();
$.ajax({
键入:“GET”,
数据:{Id:param},
url:“/QuickInvoices/GetCustDetails”,
成功:{
功能(响应){
if(响应!=null){
警惕(“你好”);
$('customer_CompanyName').val(response.CompanyName);
}
否则{
警惕(“出了问题!”);
}
}
},
故障:功能(响应){
警报(“失败”);
},
错误:函数(响应){
警报('error'+response.responseText);
}
});
});
});
控制器:

[HttpGet]
public JsonResult GetCustDetails(int Id)
{
    Customer customer = db.Customers.Where(x => x.Id == Id)
                                    .SingleOrDefault<Customer>();

    return Json(customer, JsonRequestBehavior.AllowGet);
}
[HttpGet]
公共JsonResult GetCustDetails(int Id)
{
Customer=db.Customers.Where(x=>x.Id==Id)
.SingleOrDefault();
返回Json(customer,JsonRequestBehavior.AllowGet);
}

有人能帮忙吗?

请尝试下面的代码示例,并检查网络选项卡的请求和响应 你会得到更好的主意

 $(document).ready(function () {
        $("#CustomerId").select2({
            placeholder: "Select a customer"
        });
        $("#CustomerId").change(function () {
            var param = $("#CustomerId Option:Selected").val();
                   $.ajax({  
                        type: "POST",  
                        url: '@Url.Action("GetCustDetails", "QuickInvoices")',
                        data: { Id: param },  
                        dataType: "json"  
                        contentType: 'application/json; charset=utf-8',  
                        success: function(data) {  
                            alert(data.msg);  
                        },  
                        error: function() {  
                            alert("Error occured!!")  
                        }  
                    });  
        });
    });

浏览器的控制台或网络工具中有错误吗?不调试时url是否不同?控制台/网络工具中没有错误,因为我甚至尝试在chrome上调试。Url在debug和release modeRemove中都是相同的。在下面的响应中@Amit Sakare提到的“success”事件之后移动多余的作用域定义。我试着在讨论中删除多余的大括号来运行代码,效果很好。
 $(document).ready(function () {
        $("#CustomerId").select2({
            placeholder: "Select a customer"
        });
        $("#CustomerId").change(function () {
            var param = $("#CustomerId Option:Selected").val();
                   $.ajax({  
                        type: "POST",  
                        url: '@Url.Action("GetCustDetails", "QuickInvoices")',
                        data: { Id: param },  
                        dataType: "json"  
                        contentType: 'application/json; charset=utf-8',  
                        success: function(data) {  
                            alert(data.msg);  
                        },  
                        error: function() {  
                            alert("Error occured!!")  
                        }  
                    });  
        });
    });