Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax返回控制器方法值_Javascript_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript 使用ajax返回控制器方法值

Javascript 使用ajax返回控制器方法值,javascript,c#,jquery,ajax,asp.net-mvc,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':

我有一个函数,它使用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>

$(函数(){
//创建输入数据
函数(输入数据){
var myItem=CallService(inputData);
$('#name').text(myItem.name);
};
});        

由于ajax没有返回任何内容,我在页面上收到一条错误消息“myItem未定义”。有人能解释一下如何返回变量并在JS函数中使用它吗?

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

我很惊讶你在任何地方都找不到这样的例子,但下面是:

有几种不同的定义回调的方法,可以在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调用是异步运行的,因此您以前使用的结构将不起作用-您不能直接从“CallService”包装器返回任何内容,这使得它变得多余。您必须等待ajax调用完成,然后根据“done”回调中(或从中调用的函数中)的结果运行任何代码


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

我很惊讶您在任何地方都找不到这样的示例,但下面是:

有几种不同的定义回调的方法,可以在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调用是异步运行的,因此您以前使用的结构将不起作用-您不能直接从“CallService”包装器返回任何内容,这使得它变得多余。您必须等待ajax调用完成,然后根据“done”回调中(或从中调用的函数中)的结果运行任何代码


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

。请检查这个。请检查这个谢谢你的回答。是的,你是对的,有很多不同解决方案的资源。是的,我看到了你在上面分享的页面。但不幸的是,对我来说,.done()似乎永远无法实现。即使我设置了$('#name').text(“测试名”);这是同样的情况也许你还有其他错误?您是否检查过浏览器的工具以查看ajax调用是否成功?你有没有恢复200 OK状态,或者别的什么?响应中包含什么?Ajax返回200,响应中包含自定义对象。看起来是对的。唯一的问题是获取结果并显示它。不要介意。我将尝试重新组织我的代码。非常感谢您的帮助也许
name
不是结果的直接属性?如果您(从console.log命令)向我显示
result
的外观,我可以帮助您。您还需要确保页面上有一个具有
id=“name”
属性且可见的元素,以便显示它。非常感谢您的帮助。在我的例子中,问题是一个“dataType:'json'”参数。Ajax在删除它之后工作得很好。这里找到了解决办法:谢谢你的回答。是的,你是对的,有很多不同解决方案的资源。是的,我看到了你在上面分享的页面。但不幸的是,对我来说,.done()似乎永远无法实现。即使我设置了$('#name').text(“测试名”);这是同样的情况也许你还有其他错误?您是否检查过浏览器的工具以查看ajax调用是否成功?你有没有恢复200 OK状态,或者别的什么?响应中包含什么?Ajax返回200,响应中包含自定义对象。看起来是对的。唯一的问题是获取结果并显示它。不要介意。我将尝试重新组织我的代码。非常感谢您的帮助也许
name
不是结果的直接属性?如果您(从console.log命令)向我显示
result
的外观,我可以帮助您。您还需要确保页面上有一个具有
id=“name”
属性且可见的元素,以便显示它。非常感谢您的帮助。在我的例子中,问题是一个“dataType:'json'”参数。Ajax在删除它之后工作得很好。在这里找到了解决方案: