MVC3 jQuery getJSON不发出调用

MVC3 jQuery getJSON不发出调用,jquery,asp.net-mvc,asp.net-mvc-3,getjson,Jquery,Asp.net Mvc,Asp.net Mvc 3,Getjson,我试图使用getJSON()调用使ajax工作。 当我导航到/Home/GetWeather时,我会在浏览器中返回Json数据。 但是jQuery调用不起作用。有什么想法吗? 当我将断点置于警戒状态(“Hello”)时,它从未命中。 在firebug中,我没有看到任何ajax调用。有什么想法吗 $(document).ready(function() { $("#Button1").click(function() { $.getJSON("/Home/GetWeathe

我试图使用getJSON()调用使ajax工作。 当我导航到/Home/GetWeather时,我会在浏览器中返回Json数据。 但是jQuery调用不起作用。有什么想法吗? 当我将断点置于警戒状态(“Hello”)时,它从未命中。 在firebug中,我没有看到任何ajax调用。有什么想法吗

$(document).ready(function() {
    $("#Button1").click(function() {
        $.getJSON("/Home/GetWeather", null, function(data) {
            alert("Hello");
        });
    });
});​
控制器代码

public class HomeController : Controller
{
    //
    // GET: /Home/

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

    public JsonResult GetWeather()
    {
        List<Weather> weather = new List<Weather>();

        // populate weather with data

        return Json(weather, JsonRequestBehavior.AllowGet);
    }
}
公共类HomeController:控制器
{
//
//回家/
公共行动结果索引()
{
返回视图();
}
公共JsonResult GetWeather()
{
列表天气=新列表();
//用数据填充天气
返回Json(weather,JsonRequestBehavior.AllowGet);
}
}
查看:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
    <script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function () {

            $("#Button1").click(function () {
                $.getJSON("/Home/GetWeather", null, function (data) { //I hit breakpoint here, but in firebug I dont see any call, nothing
                    alert("Hello"); // Breakpoint here doesnt hit :(
                });
            });

        });

    </script>
</head>
<body>
    <input id="Button1" type="button" name="Button1" value="Get Weather" />
    <div id="Weather"></div>
</body>
</html>
@{
布局=空;
}
指数
$(文档).ready(函数(){
$(“#按钮1”)。单击(函数(){
$.getJSON(“/Home/GetWeather”,null,函数(数据){//我在这里点击了断点,但在firebug中我没有看到任何调用,什么都没有
警报(“Hello”);//此处的断点未命中:(
});
});
});
我找到的解决方案被删除的原因是什么?
  • 不要使用
    Asp.NETMVC对URL进行硬编码
    使用
    URL.Action
  • 删除
    null
    参数。为什么需要将
    null
    发送到控制器?只需忽略它即可
获得正确路线的代码:

@Url.Action("GetWeather", "Home")
在脚本内部:

$("#Button1").click(function () {
    $.getJSON("@Url.Action("GetWeather", "Home")", function (data) {
        alert("Hello");
    });
});

如果按钮是提交按钮或锚定按钮,请确保通过返回false取消该按钮的默认操作:

$("#Button1").click(function() {
    $.getJSON("/Home/GetWeather", null, function(data) {
        alert("Hello");
    });

    return false; // <!-- cancel the default action of the button
});
您应该。您应该始终使用url帮助程序:

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


此外,您还应该学会使用诸如FireBug之类的javascript调试工具,这使得检测这些错误变得轻而易举。如果您使用了FireBug,您在请求这些脚本时会看到404个错误。

据我所知,您试图将其称为跨域。让代码在网站的域之外运行。在我拥有html文件调用从localhost运行的json,它不会返回任何内容。但是,将该html放在同一位置,从localhost调用它,您就会没事了。

到控制器的正确路径?可能类似于
。/Home/GetWeather
。此外,您可以从调用中删除
null
,检查您是否有任何问题同源策略。请参阅:@CharlieKilian。他正在向控制器发送数据,他如何才能激活同源策略?firebug或chrome开发工具中是否有任何错误?您是否包含jquery.js?是
#按钮1
锚定标记?现在您更新了您的问题…?第一次真正应该编写答案时,您需要编辑您的答案问题…请这样做。如果有空或没有空,这没有任何区别。我不需要Url。操作,我在同一个MVC应用程序中使用jQuery。@Sigourney_Weaver。对,那为什么要保留它?!三点正如我说的,它不会改变任何东西,好吧,如果你愿意,我会删除它,同样的问题。正如我所说,在浏览器中导航/Home/GetWeather时,我获取JSON数据。firebug中没有错误。事实上,正如我所说,我没有看到firebug中的调用。我不知道为什么,它应该绝对简单,就像教程中一样。但是他提到他没有在firebug中看到请求,如果这是问题,他应该看到它,不是吗?他没有看到它,因为他被重定向了AJAX请求甚至没有时间启动。不幸的是,由于OP没有显示他的观点,我们只能猜测这是不是真的。也许,我正在等待他观点的确定。如果这是问题,他应该告诉我们他正在使用锚重定向…:(没有重定向,它不是一个提交按钮。那么代码应该可以工作,如果没有,FureBug会告诉你原因。
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js")" type="text/javascript"></script>