函数在mvc5中由ajax取Null值

时间:2017-05-25 05:07:45

标签: c# asp.net-mvc asp.net-ajax asp.net-mvc-5

这个ajax是从.cshtml文件调用到控制器但getValue函数在加载时取Null值,但之后它工作正常。它evens显示ajax调用上的警报值,但在控制器上获取null。任何帮助都将受到高度赞赏。

<script>  
$(document).ready(function(){
   //get value from dropdown list
    var ID = $('#cmb').val();  
   // ID is taking value        
                $.ajax({
                    // /ControllerName/FunctionName
                    // /Home/getvalue
                    url: "/Home/getValue",   
                    type: "POST",
                    // ID is getting from dropdownList  
                    // parameterName/value                                                        
                    data: JSON.stringify({'_ID':ID}),
                    dataType: "json",
                    traditional: true,
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        if (data.status == "success") { 
                           //if got response                       
                           //alert(data.status);
                        } 
                    },
                    error: function () {
                        //if if not response
                        //alert('something went wrong');
                    }
                });
       });
</script>

 [HttpPost]
 public JsonResult getValue(string _ID)
 {
     string a = _ID;
 }

4 个答案:

答案 0 :(得分:0)

在加载时取值为null是合理的,因为带有id cmd的HTML元素的值将是未定义的,因为我假设没有选择任何值(select元素的选项具有属性如果选择了一个值,则此属性的值为true)。

奇怪的是,你说之后的工作正如预期的那样。我怀疑这一点,除非你有任何其他代码,你没有在你的帖子中包含它。因为在成功加载DOM之后似乎只有一个AJAX调用。

通常我们注册一个事件,当我们进行这样的AJAX调用时。我可以假设您可以注册select元素值(下拉列表)的onChange事件

$(document).ready(function(){
    $("#cmb").on("change", function(){
        //get value from dropdown list
        var ID = $(this).val();  
        // ID is taking value        
        $.ajax({
            // /ControllerName/FunctionName
            // /Home/getvalue
            url: "/Home/getValue",   
            type: "POST",
            // ID is getting from dropdownList  
            // parameterName/value                                                        
            data: JSON.stringify({'_ID':ID}),
            dataType: "json",
            traditional: true,
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                if (data.status == "success") { 
                    //if got response                       
                    //alert(data.status);
                } 
            },
            error: function () {
                //if if not response
                //alert('something went wrong');
            }
        });
    });
});

答案 1 :(得分:0)

您必须更改以下代码中的URL和参数检查:

$(document).ready(function(){
    //get value from dropdown list
    var ID = $('#cmb').val();  
    // ID is taking value      
    $.ajax({
        url: "/Home/getValue?_ID=" + ID,
        type: "POST",
        dataType: "json",
        data: 'json',
        success: function (data) {
            if (data.status == "success") { 
                //if got response                       
                //alert(data.status);
            } 
        },
        error: function () {
            //if if not response
            //alert('something went wrong');
        }
    });

});

干杯!!

答案 2 :(得分:0)

Change Paramaters Name 
use id in replace of _ID

[HttpPost]
 public JsonResult getValue(string id)
 {
     string a = id;
 }
$(document).ready(function(){
    $("#cmb").on("change", function(){
        //get value from dropdown list
        var id= $(this).val();  
        // ID is taking value        
        $.ajax({
            // /ControllerName/FunctionName
            // /Home/getvalue
            url: "/Home/getValue",   
            type: "POST",
            // ID is getting from dropdownList  
            // parameterName/value                                                        
            data: JSON.stringify({'id':ID}),
            dataType: "json",
            traditional: true,
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                if (data.status == "success") { 
                    //if got response                       
                    //alert(data.status);
                } 
            },
            error: function () {
                //if if not response
                //alert('something went wrong');
            }
        });
    });
});

答案 3 :(得分:0)

如果你确定你的ID不是null,那就试试吧。

<script>  
$(document).ready(function(){
var ID = $('#cmb').val();       
            $.ajax({
                url: "/Home/getValue",   
                type: "POST",                                                     
                data: {_ID:ID},
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data.status == "success") { 
                       //if got response                       
                       //alert(data.status);
                    } 
                },
                error: function () {
                    //if if not response
                    //alert('something went wrong');
                }
            });
   });