留言版的问题-JavaScript不适合写ASP?

紫郢剑侠 2003-12-05 05:44:57
以下是显示留言版内容的程序, 当不传递typ、Page、obj等参数的值时出错:

Page=-1 typ=undefined obj=undefined
sql = Select * from leaword where undefined like '%%undefined%%';

Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'

ODBC 驱动程序不支持所需的属性。

/disp_leaword.asp,行35

请大虾指点。这个程序是从VBS描述的ASP改写而来,难道JS不适合写ASP?

//以下是显示留言版内容的程序

<% @language="JavaScript" %>
<%
var Page, typ, obj;

if (Request.QueryString("typ")=="undefined")
{
Page = Request.QueryString("Page") - 1;
// typ = Request.QueryString("typ");
// obj = Request.QueryString("obj");
}
else
{
Page = -1;
typ = Request.Form("selSeach");
obj = Request.Form("txtSearch");
}

Response.Write("Page=" + Page + " typ=" + typ + " obj=" + obj + "<br>");

var sql;

if (Page!=-1)
{
sql = "Select * from leaword";
}
else
{
sql = "Select * from leaword where " + typ + " like '%%" + obj + "%%';";
}

Response.Write("sql = " + sql + "<br>");

var res = Server.CreateObject("ADODB.RecordSet");
var DBName = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb");
res.Open(sql, DBName, 1, 1);

//var conn = Server.CreateObject("ADODB.Connection");
//不能写成conn.Open("driver = {Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb"));
// ^ ^ 不能有空格
//conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb"));
//res.Open(sql, conn, 1, 1);

if (res.RecordCount==0) //不能写成res.RecordCount()
{
Response.Write("<p align='center'><font color=red size=6>No Found!</font></p>");
Response.Write("<p align='center'><a href='javascript:history.go(-1)'>Return</a></p>");
res.close();
}
else
{
Response.Write("<p>Search:");
Response.Write("<form method='POST' action='disp_leaword.asp'>共有" + res.RecordCount + "条记录!<br>");
Response.Write("<select NAME='selSearch' size='1'><option value='ID'>ID</option><option selected value='Caption'>Caption</option></select>");
Response.Write("<INPUT TYPE='text' NAME='txtSearch' size='20'><input type='submit'></form></p><br>你要查看第几页?");

for (var i = 1; i <= (res.RecordCount/20+1); i++)
{
Response.Write("<a href='disp_leaword.asp?Page=" + i + "&typ=" + typ + "&obj=" + obj + "'>第" + i + "页</a>  ");
}

Response.Write("<p>");

for (var j = 0; j <= Page*20-1; j++)
{
res.MoveNext;
}

var count = 0;
while (count!=20 && !res.EOF)
{
var ID = res("ID");
var Caption = res("Caption");
var Leaword = res("Leaword");
Response.Write("<div style='width:100%;'><span style='width:100%;background: purple; color: yellow;width:30%'>[ID] " + ID + "</span><span style='background:yellow; color:purple; width:70%;'>[Caption] " + Caption + "</span></div>" + "<div style='border:1 solid purple; color:purple'>" +Leaword + "</div><P>");
//Response.Write("<hr noshade size=1 color=#009900>");
res.MoveNext;
count++;
}
res.Close();
conn.Close(); //conn=nothing;
}
Response.Write("<a href='leaword.htm'>我要留言</a>    ");

for (j = 1; j < i; j++)
{
Response.Write("<a href='disp_leaword.asp?Page=" + j + "&typ=" + typ + "&obj=" + obj + "'>第" + j + "页</a>  ");
}
%>
...全文
123 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-12-24
  • 打赏
  • 举报
回复
以前写惯C了,所以写ASP时想用JavaScript.

楼上的大虾能留下QQ号以便请教吗?

这个问题我已经解决了:

<% @language="JavaScript" %>
<%
/*
文件名:disp_leaword.asp
作 者:Purple Endurer
功 能:显示查询留言
参 考:<电脑商情报-家用电脑2000合订本第二卷(13--24期)>)P455<构建自己的数据库留言版>

表Leaword的结构为:
字段名称 数据类型 字段大小 新值 必填字段 允许空字符串 索引
--------------------------------------------------------------------
no 自动编号 长整型 递增 有(无重复) 关键字
ID 文本 20 否 否 有(有重复)
Caption 文本 50 否 否 有(有重复)
Leaword 备注 否 否

*/
var Page, typ, obj = Request.Form("txtSearch");//
var iMethod = 2; //指定访问数据库的方法
var ShowDbgMsg = 0; //是否显示调试信息0---不显示, 1---显示
var RecordPerPage = 10;

//用obj来检测是否有参数传递
//其中String(obj)!="undefined"用于检测从save_leaword.asp转来
if (obj && String(obj)!="undefined")
{
Page = -1; //Page = -1表示搜索
typ = Request.Form("selSearch");
obj = Request.Form("txtSearch");
}
else
{
Page = Request.QueryString("Page") - 1;
//typ = Request.QueryString("typ");
//obj = Request.QueryString("obj");
}

if (ShowDbgMsg)
{
Response.Write("Page=" + Page + " typ=" + typ + " obj=" + obj + "<br>");
}

var sql;

if (Page==-1)//是搜索吗?
{
sql = "Select * from leaword where " + typ + " like '%%" + obj + "%%';";
}
else
{
sql = "Select * from leaword";
}

if (ShowDbgMsg)
{
Response.Write("sql = " + sql + "<br>");

}

var res = Server.CreateObject("ADODB.RecordSet");
var DBName = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb");

if (iMethod==1)
{
res.Open(sql, DBName, 1, 1);
}
else
{
var conn = Server.CreateObject("ADODB.Connection");
//不能写成conn.Open("driver = {Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb"));
// ^ ^ 不能有空格
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guest.mdb"));
res.Open(sql, conn, 1, 1);
}

if (res.RecordCount==0) //不能写成res.RecordCount()
{
Response.Write("<p align='center'><font color=red size=6>No Found!</font></p>");
Response.Write("<p align='center'><a href='javascript:history.go(-1)'>Return</a></p>");
res.close();
}
else
{
Response.Write("<p>Search:" + ((Page==-1) ? (typ + "中包含" + obj + "的留言") : ""));
Response.Write("<form method='POST' action='disp_leaword.asp'>共有" + res.RecordCount + "条留言!<br>");
Response.Write("<select NAME='selSearch' size='1'><option value='ID'>ID</option><option selected value='Caption'>Caption</option></select>");
Response.Write("<INPUT TYPE='text' NAME='txtSearch' size='20'><input type='submit'></form></p><br>你要查看第几页(" + RecordPerPage +"条留言/页)?");

for (var i = 1; i < (res.RecordCount/RecordPerPage+1); i++)
{
Response.Write("<a href='disp_leaword.asp?Page=" + i + "&typ=" + typ + "&obj=" + obj + "'>第" + i + "页</a>  ");
}

Response.Write("<p>");

for (var j = 0; j <= Page*RecordPerPage-1; j++)
{
res.MoveNext;
}

var count = 0;
while (count!=RecordPerPage && !res.EOF)
{
var ID = res("ID");
var Caption = res("Caption");
var Leaword = res("Leaword");
Response.Write("<div style='width:100%;'><span style='width:100%;background: purple; color: yellow;width:30%'>[ID] " + ID + "</span><span style='background:yellow; color:purple; width:70%;'>[Caption] " + Caption + "</span></div>" + "<div style='border:1 solid purple; color:purple'>" +Leaword + "</div><P>");
//Response.Write("<hr noshade size=1 color=#009900>");
res.MoveNext;
count++;
}
res.Close();

if (iMethod==2)
{
conn.Close(); //conn=nothing;
}
}
Response.Write("<a href='leaword.htm'>我要留言</a>    ");

for (j = 1; j < i; j++)
{
Response.Write("<a href='disp_leaword.asp?Page=" + j + "&typ=" + typ + "&obj=" + obj + "'>第" + j + "页</a>  ");
}
%>
  • 打赏
  • 举报
回复
VBSCRIPT:后台,提交验证
JAVASCRIPT:前台,提交验证
fason 2003-12-23
  • 打赏
  • 举报
回复
var strPara = String(Request.QueryString("QUERY_STRING"));
if (strPara=="undefined")
{
Response.Write("No para!");
}
紫郢剑侠 2003-12-23
  • 打赏
  • 举报
回复
我就是想用JS来写ASP呀.
Trim()是VBS的函数, 在JS中要用哪个呀?


我想用
var strPara = Request.ServerVariables("QUERY_STRING");
if (strPara.Length==0)
{
Response.Write("No para!");
}


来判断有没有参数传送, 但不成功, 怎么解决?
N1rvana 2003-12-23
  • 打赏
  • 举报
回复
我的前后台全都是用的Javascript,这个是个人习惯吧。
fason 2003-12-23
  • 打赏
  • 举报
回复
不要这样来比较
**************************
VBSCRIPT:后台,提交验证
JAVASCRIPT:前台,提交验证
*************************
完全只是个人风格和习惯
狼哥的前台验证就都是vbs.
我写的后台验证习惯用js.
笑对最好 2003-12-23
  • 打赏
  • 举报
回复
你给出的代码定义为js,后面的是asp啊!
传递参数的时候不用处理。
接受参数的时候
<%
page=Request.QueryString("Page")
if(Trim(page)<>"")page=page-1
typ = Request.QueryString("typ")
%>
这样如果typ没有穿过来的化,就是空的,不会是undefined,
undefined是javascript里面的。
或者在javascript里面传送之前判断一下。
紫郢剑侠 2003-12-23
  • 打赏
  • 举报
回复
我现在就问下面这个问题, 大家帮帮帮忙嘛:

请问如何在JS中检测是否有参数传送呢?

比如下面这段代码:

var Page, typ, obj;

Page = Request.QueryString("Page") - 1;
typ = Request.QueryString("typ");

当没有传递参数typ时, 执行结果为typ是undefined. 但在程序中如何检测typ是undefined呢?
紫郢剑侠 2003-12-23
  • 打赏
  • 举报
回复
To fason(人生几度秋)
多谢!

To wertou(小贝(ECKHAM))
为什么

VBSCRIPT:后台,提交验证
JAVASCRIPT:前台,提交验证

难道JavaScript不适合写ASP?
monkeys 2003-12-22
  • 打赏
  • 举报
回复
偶最怕怕这麽一大片的代码了

眼睛容易花,脑壳晕,怕是有哒职业病
紫郢剑侠 2003-12-22
  • 打赏
  • 举报
回复
up
紫郢剑侠 2003-12-22
  • 打赏
  • 举报
回复
大家帮帮忙嘛!
紫郢剑侠 2003-12-15
  • 打赏
  • 举报
回复
请问如何在JS中检测是否有参数传送呢?

比如下面这段代码:

var Page, typ, obj;

Page = Request.QueryString("Page") - 1;
typ = Request.QueryString("typ");

当没有传递参数typ时, 执行结果为typ是undefined. 但在程序中如何检测typ是undefined呢?
yllaji 2003-12-06
  • 打赏
  • 举报
回复
你代码写的不对
wocsdn 2003-12-05
  • 打赏
  • 举报
回复
根据我的判断你是将一个javascript写的asp包含到vbs写的asp里了

要不然不会出现如下错误的!
<!--
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
-->

分析如果你用的都是javascript如果出错就应该出现如下错误
<!--
Microsoft JavaScript 编译器错误 错误 '800a03f6'
缺少 '}'
-->

skyboy0720 2003-12-05
  • 打赏
  • 举报
回复
我想可能是老驱动的问题
用microsoft.JET.OLDEB.4.0打开试试!
monkeys 2003-12-05
  • 打赏
  • 举报
回复
不会的
可能是你输入的查询数据里面有非法字符 '
kanshangren 2003-12-05
  • 打赏
  • 举报
回复
当然不是,应该是代码错误

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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