为什么我无法从ajax函数中获取控制器中的数据?

时间:2016-05-08 05:52:39

标签: ajax asp.net-mvc

我是asp.net mvc的初学者,想要从控制器到ajax变量获取简单的json,为此目的在视图页面中写这个ajax函数:

<script>
    var OutPut;
    OutPut = "behzad";
    function CallService() {
        $.ajax({
            url: '@Url.Action("callService", "myPassword")',
            type: 'GET',
            dataType: 'json',
            cache: false,
            data: { 'id': 2 },
            success: function (color) {
                OutPut= color;

            },
            error: function () {
                alert('Error occured');
            }
        });
        alert("I think is ok!"+":"+OutPut);

    }
</script>


和这个控制器:

[HttpGet]
        public JsonResult callService(int id)
        {
            string JSON = "behzad";
            return Json(JSON,JsonRequestBehavior.AllowGet);

        }


ajax函数在视图页面中使用此html代码调用:

<button type="button" class="btn btn-success" onclick="CallService()">Success</button>


但这条线在ajax函数中:

alert("I think is ok!"+":"+OutPut);


输出是未定义的,发生了什么?控制器返回null?或者为什么我得到未定义的警报?谢谢。

1 个答案:

答案 0 :(得分:2)

由于AJAX调用是异步的,您应该将警告置于成功回调中:

<script>
    function CallService() {
        $.ajax({
            url: '@Url.Action("callService", "myPassword")',
            type: 'GET',
            cache: false,
            data: { 'id': 2 },
            success: function (color) {
                alert("I think is ok!" + ":" + color);
            },
            error: function () {
                alert('Error occurred');
            }
        });
    }
</script>