C# 为什么可以';JQuery是否加载我的资源?

C# 为什么可以';JQuery是否加载我的资源?,c#,jquery,asp.net,C#,Jquery,Asp.net,我在一个名为ajax.aspx的页面中有以下脚本: <script type="text/javascript"> $(document).ready(function () { var nameFoundMessage = $('#nameFoundMessage'); var nameInput = $('#name'); nameFoundMessage.hide(); nameInput.blur

我在一个名为ajax.aspx的页面中有以下脚本:

 <script type="text/javascript">
    $(document).ready(function () {

        var nameFoundMessage = $('#nameFoundMessage');
        var nameInput = $('#name');

        nameFoundMessage.hide();

        nameInput.blur(function () {


            if ($(this).val()) {


                $.getJSON('Services/ArtistFound.aspx?' + escape($(this).val()), function (results) {

                    if (results.available) {
                        if (nameFoundMessage.is(':visible')) {
                            nameFoundMessage.html('The name was found');
                        }
                    }
                    else {

                        nameFoundMessage.show();
                        nameFoundMessage.html('The name was not found');
                    }
                });

            }
        });
    });
</script>
当我运行页面并模糊输入时,它会显示以下内容:

        Response.ContentType = "application/json";

        string name = Request.QueryString.ToString();
        string output = string.Empty;

        name = db.Names.Single(x => x.Name== name).Name;

        if(name == null)
        {
            output = "{available:false}";
        }
        else
        {
            output = "{available:true}";
        }

        Response.Write(output);
}
加载资源失败:服务器响应状态为500(内部服务器错误)

我已尝试../Services/ArtistFound.aspx。。。和/Services/ArtistFound.aspx…,但它仍然给我相同的错误。

您想要:

    name = db.Names.FirstOrDefault(x => x.Name== name);

    if(name != null && name.Name != null)
    {
        output = "{available:true}";
    }
    else 
    {
        output = "{available:false}";
    }
如果找不到它,它将返回null,而不是像Single()那样抛出异常

我还建议您使用ASHX处理程序而不是ASPX页面来执行此调用。 为此,您只需在visual studio中添加一个“通用处理程序”文件,然后就可以将ProcessRequest方法替换为:

    public void ProcessRequest(HttpContext context)
    {
        string name = context.Request.QueryString.ToString();
        string output = string.Empty;

        name = db.Names.FirstOrDefault(x => x.Name == name);

        if (name != null && name.Name != null)
        {
            output = "{available:true}";
        }
        else
        {
            output = "{available:false}";
        }

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

错误在ArtistFound.aspx页面的代码中的某个地方,而不是jQuery。尝试直接加载页面并调试页面。jQuery只是在传递错误。如果在ArtistFound.aspx中放置断点,它是否会被加载?因为那不是一个Web服务,只是一个页面,querystring的格式不应该破坏它-听起来好像该页面的代码不起作用。你是对的,我用这个语句返回一个名称,但它说更多的序列包含多个元素,但我只想得到一个不同的名称或忽略空格,但是我不知道怎么做:name=db.Names.Single(x=>x.name==name.name<代码>名称。首先如果有DUP,并且您不关心它们。Single要求只有一个匹配项。Names.First在找不到元素时引发异常。如果我使用FirstOrDefault,它会抛出一个NullReference异常,而不仅仅是将null指定给name。谢谢,是的,我知道这不是正确的方法,我只是按照rolla站点的4个人的教程进行操作,但是使用ASHX处理程序信息会很有帮助。在当前的问题上,如果我先使用,但它没有找到任何东西,它会抛出一个异常,表示找不到元素。如果我使用FirstOrDefault或SingleOrDefault,它会抛出异常“NullReferenceException”。现在,我只是将它放在一个try-catch块中,如果它抛出了异常,我就将它赋值为null,但是我的跨度没有用适当的消息设置。我的jquery代码有问题吗。我在aspx页面上的所有内容都是Name:ah,我没有注意到结尾的.Name。我已经更新了代码,如果没有try-catch,它现在应该可以正常工作了。这解决了异常并删除了try-catch,但是我的span的html没有被设置,我不知道为什么。是否有javascript错误?调试时,结果对象是否包含任何内容。此外,如果您正在查找一个名称,它将不会设置跨度的html,因为在开始时隐藏该名称时会出现可见检查。你能把那部分的html也贴上去吗?