在JQuery中为什么一个ajax请求正在工作而另一个不是?

时间:2014-02-06 10:31:00

标签: javascript jquery asp.net ajax

我正在开发一个应用程序,我必须调用多个ajax请求。我正在发送$ .GET和$ .POST ajax请求,这些请求工作得很好,但后来我尝试了解常见的$ .ajax请求。问题是$ .ajax不起作用,下面是一段代码< / p>

//get request with $.get works

           $.get("/RequestCont/Task2", function (data) { alert(data); });

//common ajax request below don't work


           $.ajax({
                    url: "/RequestCont/Task2",
                    type: "GET",
                    dataType: "json",
                    success:function(data)
                    {
                        //processing json data here
                    },
                    failure:function(data)
                    {
                        //handling error here
                    }

                });

我正在使用asp.net mvc,实际代码我还没有在这里写一段代码来证明它是否有效。此操作位于控制器RequestCont

public ActionResult Task2()
    {
        if (Request.IsAjaxRequest())
        {
            return Json(new { msg = "data retrieved" });
        }
        else
        {
            return null;
        }
    }

对此有任何想法。我想检索json数据!我做错了什么或什么?任何人帮帮我!谢谢!。

2 个答案:

答案 0 :(得分:0)

您正在从后端以错误的格式发送JSON数据。

重要说明:从jQuery 1.4开始,如果JSON文件包含语法错误,请求通常会无提示失败。出于这个原因,避免频繁手动编辑JSON数据。 JSON是一种数据交换格式,其语法规则比JavaScript的对象文字符号更严格。例如,JSON中表示的所有字符串,无论它们是属性还是值,都必须用双引号括起来。有关JSON格式的详细信息,请参阅http://json.org/

<强>来源:

get json jquery reference

检查类似的SO问题

jQuery $.ajax request of dataType json will not retrieve data from PHP script

答案 1 :(得分:0)

问题是我在代码中缺少JsonRequestBehavior.AllowGet。一切都很好。对于在任何阶段遇到相同问题的所有人,请注意在json对象中,您必须始终放置JsonRequestBehavior.AllowGet

修改后的行动如下!

public ActionResult Task2()
    {
        if (Request.IsAjaxRequest())
        {
            return Json(new { msg = "data retrieved" },JsonRequestBehavior.AllowGet);
        }
        else
        {
            return null;
        }
    }

这也适用于帖子..

快乐的编码: - )