Asp.net mvc 3 为什么jquery不能在MVC3应用程序中工作?

Asp.net mvc 3 为什么jquery不能在MVC3应用程序中工作?,asp.net-mvc-3,c#-4.0,jquery,Asp.net Mvc 3,C# 4.0,Jquery,我在我的_Layout.cshtml中得到了一个jquery引用。但是,在我的Index.cshtml页面中,这似乎不起作用:没有命中/Home/GetSquareRoot?(当我在index.cshtml中取消对jquery引用的注释时,它会起作用) ViewStart.cshtml @{ Layout = "~/Views/Shared/_Layout.cshtml"; } Index.cshtml @{ ViewBag.Title = "Home Page"; } <

我在我的_Layout.cshtml中得到了一个jquery引用。但是,在我的Index.cshtml页面中,这似乎不起作用:没有命中/Home/GetSquareRoot?(当我在index.cshtml中取消对jquery引用的注释时,它会起作用)

ViewStart.cshtml

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Index.cshtml

@{
    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
        http://asp.net/mvc</a>.
</p>

@*<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>*@

<script type="text/javascript">
    function calculateSquareRoot(numberToCalculate) {
        $.ajax({
            type: 'GET',
            url: '/Home/GetSquareRoot',
            data: { number: numberToCalculate },
            success: function (data) { alert(data.result); }
        });
    }

</script>

    <button type="button" onclick="calculateSquareRoot(9);">
        Calculate Square</button>

当jQuery引用被注释掉时,它就可以工作了,因为您的_Layout.cshtml文件也有引用(仅说明事实,我意识到您可能知道这一点)

这也意味着您已经正确设置了路由,并且URL“/Home/GetSquareRoot”没有问题

代码看起来不错,我能看到的唯一未知是.././Scripts/实际上与~/Scripts/位于同一个位置/(取决于页面的URL)

我会使用Google Chrome检查页面上的脚本错误:转到页面,右键单击并在页面上“检查元素”,然后检查您是否没有任何脚本错误(如果有,检查器右下角将有一个红色圆圈)


如果您有脚本错误,可能会阻止AJAX调用运行。

当您注释掉jQuery引用时,它会起作用,因为您的_Layout.cshtml文件也有引用(仅说明事实,我意识到您可能知道这一点)

这也意味着您已经正确设置了路由,并且URL“/Home/GetSquareRoot”没有问题

代码看起来不错,我能看到的唯一未知是.././Scripts/实际上与~/Scripts/位于同一个位置/(取决于页面的URL)

我会使用Google Chrome检查页面上的脚本错误:转到页面,右键单击并在页面上“检查元素”,然后检查您是否没有任何脚本错误(如果有,检查器右下角将有一个红色圆圈)


如果出现脚本错误,可能会阻止AJAX调用运行。

在应用程序中引用硬编码内容Url时,最好使用
Url.content

因此,与此相反:

<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>

使用以下命令:

<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js")" type="text/javascript"></script>


这样,无论页面的URL是什么,都将始终使用jQuery脚本文件的正确URL。

在应用程序中引用硬编码内容URL时,最好使用
URL.content

因此,与此相反:

<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>

使用以下命令:

<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js")" type="text/javascript"></script>

这样,无论页面的URL是什么,都将始终使用jQuery脚本文件的正确URL。

试试这个

public JsonResult GetSquareRoot(long? number)
        {
            var square = Math.Sqrt(number);
            return Json(new { result = square }, JsonRequestBehavior.AllowGet);
        }
试试这个

public JsonResult GetSquareRoot(long? number)
        {
            var square = Math.Sqrt(number);
            return Json(new { result = square }, JsonRequestBehavior.AllowGet);
        }

它现在正在工作:我从layout.cshtml中删除了!它现在正在工作:我从layout.cshtml中删除了@user603007可能是你可以试试我的解决方案。@user603007可能是你可以试试我的解决方案。。。。