C# 为什么可以';JQuery是否加载我的资源?
我在一个名为ajax.aspx的页面中有以下脚本: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
<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也贴上去吗?