jQuery .getJSON方法因parseerror而失败

时间:2015-11-11 06:04:38

标签: jquery .net getjson ashx parse-error

虽然这似乎是一个常见的错误,但SO上的其他类似问题都没有向我揭示解决方案。所以,让我分享一下我的代码。

客户端HTML / jQuery:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="Scripts/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
            function DisplayJSON() {
                $.getJSON("Test1.ashx")
                    .done(function (p) {
                        alert(p.FirstName + ' ' + p.LastName);
                    })
                    .fail(function (x, textStatus, error) {
                        alert("Get JSON failed, status: " + textStatus + ", error: " + error);
                    });
            }
        </script>
    </head>
    <body>
        <input type="button" name="btnTest" value="Get JSON" onclick="DisplayJSON();" />
    </body>
</html>

服务器端HTTP处理程序.NET / C#(Test1.ashx):

    public class Test1 : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        Person p = new Person()
        {
            FirstName = "Angela",
            LastName = "Smith",
            Gender = "F",
            BirthYear = 2009
        };

        // to serialize an object to string
        string jsonText = fastJSON.JSON.ToJSON(p);

        context.Response.ContentType = "application/json";
        context.Response.Write(jsonText);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

public class Person
{
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public int BirthYear { get; set; }
    public string Gender { get; set; }
}

当我尝试检索JSON内容时,它总是失败,状态为“parseerror”,错误为“SyntaxError:Invalid character”。我看了看,我只是找不到罪魁祸首。如果我在我的服务器端代码中放置一个断点,它永远不会被击中,所以看起来getJSON调用没有正确形成,但我只是没有看到它有什么问题。希望其他人可以指出我做错了什么。

更新:错误图片

error image

1 个答案:

答案 0 :(得分:0)

好吧,我终于找出了什么是错的,当然事实证明这是我所忽视的愚蠢行为。我在家里进行这种概念验证测试的项目是为表单身份验证配置的项目。当我尝试测试该页面时,我跳过了登录步骤,显然由于缺少经过身份验证的用户,对ASHX的请求被拒绝了。如果我在导航之前首先登录,它可以正常工作。当我在办公室尝试这个时,我把它扔进了一个全新的项目,该项目没有配置用于表单身份验证。