关于ajax的xmlHttp.status返回500

terk 2007-05-15 10:36:50
实在是找不到原因了,求助阿,急死了,代码如下

------Show.js----------
function ShowItemList(para)
{
createXMLHTTP();//创建XMLHttpRequest对象
var url="ShowProd.aspx?Attrib=ShowAll";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=ShowReturn;
xmlHttp.send(null);
}

function ShowReturn()
{
if(xmlHttp.readyState==4)//判断对象状态
{
alert("xmlHttp.status:" + xmlHttp.status);
if(xmlHttp.status==200)//信息成功返回,开始处理信息
{
alert("ok");
}
}
}

--------------ShowProd.aspx------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.SessionState;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class ShowProd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string result = "";

SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
Conn.Open();
SqlCommand cmd;

if (Request.QueryString["Attrib"].ToString() == "ShowAll")
{
cmd = new SqlCommand("SELECT * FROM prodTable", Conn);
}
//else
//{
// cmd = new SqlCommand("SELECT prodID FROM prodTable", Conn);
//}
cmd.CommandTimeout = 30;
SqlDataReader rs = cmd.ExecuteReader();
while (rs.Read())
{
result = result + rs["prodName"].ToString() + "|";
}
Conn.Close();
Response.Clear();
Response.Write(result);
Response.End();
}
}

为什么注释掉那个else就会返回500出现错误,只有添加了才返回200,我另一个页面没有else,但是一切正常,晕死了
...全文
10223 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hepeng_8 2011-06-09
  • 打赏
  • 举报
回复
wo e我的是java现在也是那个问题的
zocps 2010-08-20
  • 打赏
  • 举报
回复
定期查看
梁清锋 2010-06-29
  • 打赏
  • 举报
回复
我也遇到过这样的问题,应该是你请求服务的页中有问题,也就是返回值时所调动的页面。如被调用页面中有form,与显示页面中的form相冲突。问题有可能出在你的ShowProd.aspx代码中,把<html></html>之间的所有内容全给删了status应该就不是500了。
l413279014 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 l413279014 的回复:]
提交的表单里面含危险脚本的时候返回值也是500
我遇上了才搜到这个帖子


加上validateRequest=false看可以不可以
可以的话就是了
[/Quote]

e
没看仔细代码
乱说话了希望各位无视我....
l413279014 2009-02-13
  • 打赏
  • 举报
回复
提交的表单里面含危险脚本的时候返回值也是500
我遇上了才搜到这个帖子


加上validateRequest=false看可以不可以
可以的话就是了
Jarvis-Li 2008-10-24
  • 打赏
  • 举报
回复
看一下回返那个页的返回值

问题在服务器端那个页面

可能是查数据库出错了
Dreamsea_2008 2008-10-24
  • 打赏
  • 举报
回复
刚刚我也遇到了相同的问题
关注中....
fmpfantasy 2008-10-23
  • 打赏
  • 举报
回复
Asp.net(C#)高手交流,欢迎高手加盟
Go 旅城通票 2008-10-23
  • 打赏
  • 举报
回复
我晕。。。。。

07年的帖子~~~
Go 旅城通票 2008-10-23
  • 打赏
  • 举报
回复
不过根据楼主的说法,

应该
if   (Request.QueryString[ "Attrib "].ToString()   ==   "ShowAll ") 
{
cmd = new SqlCommand( "SELECT * FROM prodTable ", Conn);
}
//else
//{
// cmd = new SqlCommand( "SELECT prodID FROM prodTable ", Conn);
//}


没有执行到Request.QueryString[ "Attrib"].ToString() == "ShowAll"的语句里面,这样cmd就是null,你使用cmd.CommandTimeout = 30; SqlDataReader rs = cmd.ExecuteReader(); 的方法时就是错误的,所以状态为500


有可能是ajax传递值的过程中改变了值的大小写或者多了空格什么的,改为这样试试


if(Request.QueryString["Attrib"].ToString().Trim().ToLower()   ==   "showall") 


Go 旅城通票 2008-10-23
  • 打赏
  • 举报
回复
使用5的代码,看返回什么错误内容
fmpfantasy 2008-10-23
  • 打赏
  • 举报
回复
Asp.net(C#)高手交流群:39364250,欢迎高手加盟!
mine27 2008-10-23
  • 打赏
  • 举报
回复
顶8楼和10楼的说法
顶顶顶!!!!!!!!!!!!
骑蚊子旅游 2008-07-18
  • 打赏
  • 举报
回复
看看错误的具体内容。

500明显是后台程序出错

你直接用IE打开ShowProd.aspx?Attrib=ShowAll 这个就可以看到详细的错误信息,前提是你的IE设置为“显示友好HTTP错误”前的勾去掉

zhh025 2008-07-16
  • 打赏
  • 举报
回复
狂感谢2楼和三楼的.
php_wsd 2007-05-26
  • 打赏
  • 举报
回复
直接打开ShowProd.aspx?Attrib=ShowAll这个文件,看看是什么?应该有错误出现,然后将错误解决,最后再运行ShowProd.aspx。
pengliangsheng999 2007-05-24
  • 打赏
  • 举报
回复
用些TRY...CATCH
lovebear777 2007-05-22
  • 打赏
  • 举报
回复
555
ssm1226 2007-05-17
  • 打赏
  • 举报
回复
弹出返回内容,看什么错误

function ShowReturn()
{
if(xmlHttp.readyState==4)//判断对象状态
{
alert("xmlHttp.status:" + xmlHttp.status);
if(xmlHttp.status==200)//信息成功返回,开始处理信息
{
alert("ok");
}
else if(xmlHttp.status==500){
alert(xmlHttp.responseText);
}
}
}
ismycxp 2007-05-17
  • 打赏
  • 举报
回复
晕倒...是c#编译器的问题

你看SqlCommand cmd;

你只定义,没有赋值,


if (Request.QueryString["Attrib"].ToString() == "ShowAll")
{
cmd = new SqlCommand("SELECT * FROM prodTable", Conn);
}
//else
//{
// cmd = new SqlCommand("SELECT prodID FROM prodTable", Conn);
//}

把ELSE注释掉就只有Request.QueryString["Attrib"].ToString() == "ShowAll",
cmd才会有值,VS是不允许这样的,在编译的时候就会出错,会提示:什么东东使用了未赋值的变量

要把ELSE去掉,干脆也把if去掉,直接cmd = new SqlCommand("SELECT * FROM prodTable", Conn);

就可以了
加载更多回复(3)

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧