使用ajax返回控制器方法值

时间:2017-09-26 15:59:37

标签: javascript c# jquery ajax asp.net-mvc

我有一个函数,它使用ajax调用控制器方法

function CallService(data) {
        $.ajax({
            url: '@Url.Action("MyMethod", "MyController")',
            type: 'GET',
            dataType: 'json',
            cache: false,
            data: { 'serializedMessage': data }                
        });

MyMethod()返回一个复杂的对象,我需要在页面上显示一些属性。

<script>
    $(function(){          

            // create inputData

            function (inputData) {                
                var myItem = CallService(inputData);                
                $('#name').text(myItem.Name);
            };
        });        
</script>

由于ajax没有返回任何内容,我在页面上收到错误消息'myItem is undefined'。任何人都可以解释如何返回变量并在JS函数中使用它吗?

2 个答案:

答案 0 :(得分:3)

我很惊讶你无法在任何地方找到这样的例子,但是这里有:

有几种不同的方法可以定义在ajax调用完成时可以运行的回调,如http://api.jquery.com/jquery.ajax/中的文档所示。这是一个基于promises API的文章:

function (inputData) {                
    $.ajax({
        url: '@Url.Action("MyMethod", "MyController")',
        type: 'GET',
        dataType: 'json',
        cache: false,
        data: { 'serializedMessage': inputData }
    }).done(function(result) {
        console.log(JSON.stringify(result)); //just for debugging, to see the structure of your returned object
        $('#name').text(result.Name);
    });
}

你需要掌握的一件事是ajax调用是异步运行的,所以你以前的结构不起作用 - 你不能直接从你的&#34; CallService&#34;包装器,哪种使它多余。你必须等到ajax调用完成,然后运行任何代码,这些代码取决于&#34; done&#34;中的结果(或在调用的函数内)。回调。

根据我链接到的文档,您还可以为任务定义其他回调,例如处理错误,如果您愿意的话。

答案 1 :(得分:0)

您必须使用success:function(response){ }