在对asp.net MVC控制器进行ajax调用时出现404错误

时间:2016-09-15 23:50:10

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

我试图向MVC控制器发出ajax请求,但每当我尝试执行脚本时,我都会收到404错误。

Failed to load resource: the server responded with a status of 404 () https://localhost:44301/LocationMapping/Test

我的请求只是从下面的代码段返回error get

我项目中相关文件的结构是

查看请求的位置 - > courselister/index.cshtml

查看控制器 - > CourseListerController.cs

我的控制器用于处理来自上述视图的Ajax请求 - > LocationMappingController.cs

我处理来自不同控制器的请求的原因是因为多个视图将使用相同的请求,因此最好将这些请求保存在LocationMappingController中。

以下是我的ajax请求的代码

$(document).ready(function () {
    $.ajax({
            url: "/LocationMapping/Test",
            type: "GET",
            dataType: "json",
            data: {},
            error: function (error) {
                alert('error get');
            },
            success: function (data) {
                alert('GET success');
                alert(data);
            }
        });
});

以下是LocationMapping Controller

中的代码
public JsonResult Test() {
{
    return Json("Get Test", JsonRequestBehavior.AllowGet);
}

我目前的理论是服务器无法找到路由/LocationMapping/Test,因为它不是视图的控制器(CourseListerController.cs)。我已经花了很长时间才找到解决方案,因此我转向SO社区提供帮助。

感谢任何帮助。

更新:我尝试创建一个新控制器和一个与之关联的视图,如下所示,

TestAjaxController.cs

public ActionResult Index()
{
    return View();
}

public JsonResult GetResponse(string str)
{
    return Json(str, JsonRequestBehavior.AllowGet);
}

TestAjaxController / Index.cshtml

<div> 
    <h1>Test Ajax Page: Location Mapping</h1>
    <button onclick="callAjax()">Click Me</button>
    <script>
        //document.ready(function () {
            console.log('jquery loaded');
            function callAjax() {
                $(document).ready(function () {
                    alert("called");
                    jQuery.ajax({
                        url: "/TestAjax/GetResponse",
                        type: "GET",
                        dataType: "json",
                        data: { str: "this is the string I want to get as a response" },
                        error: function () {
                            alert("Error occurred calling GetResponse");
                        },
                        success: function (data) {
                            alert(data);
                        }
                    });
                });         
            }            
    </script>
</div>

这有效!我收到提示&#34;这是我想要作为回复的字符串&#34;。当我的另一个控制器没有时,我不明白为什么它会起作用。

0 个答案:

没有答案