为什么AjaxPro操作数据库时返回null

forideal 2007-09-04 04:30:42
----.cs------
[AjaxPro.AjaxMethod]
public bool PublishTopic()
{
return CommonSql.ExecuteNonQuery("P_System_Config_UpdateVisitor");
}

----.js------
function LeaveWord_CallBack(ref) {
alert(ref.value);
//ifrLeaveWord.window.location.reload();
//$("Form1").reset();
}

----ExecuteNonQuery----
/// <summary>
/// 执行不返回结果的 SQL 存储过程
/// </summary>
/// <param name="sql">SQL 存储过程</param>
public bool ExecuteNonQuery(string sql)
{
try
{
SqlCommand command = Conn.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = sql;
Conn.Open();
command.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
string message = ex.Message;
return false;
}
finally
{
Conn.Close();
}
}

设置了断点做调试,发现根本就没有执行ExecuteNonQuery方法,直接返回了null,如果改成
public bool PublishTopic()
{
return true;
}
就可以返回true

第一次用AjaxPro操作数据库,郁闷死了
...全文
323 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
phara 2007-09-05
  • 打赏
  • 举报
回复
感觉就是没注册

如果LZ是AjaxPro.dll 需要 using AjaxPro;
若是AjaxPro2.dll不需要using

还有就是AjaxPro.dll 前台调的时候就写 类名.方法 就可以了 命名空间不是必须的 03 05我都试过
forideal 2007-09-05
  • 打赏
  • 举报
回复
非常感谢dreampeng007() ,的确是这个问题
freeboy827 2007-09-04
  • 打赏
  • 举报
回复
ExecuteNonQuery 为什么起这个名字呢,看着别扭,在这个方法前面加上
[AjaxPro.AjaxMethod]
试试
dreampeng007 2007-09-04
  • 打赏
  • 举报
回复
CommonSql.ExecuteNonQuery("P_System_Config_UpdateVisitor");
是这样子的,你的ExecuteNonQuery是静态方法吗,如果不是静态方法,需要在PublishTopic方法里实例化CommonSql,不能在这个方法外面实例化,否则ajax找不到,或者你直接将ExecuteNonQuery修改为静态方法。
xiao_jun_0820 2007-09-04
  • 打赏
  • 举报
回复
你的AJAX方法注册没?
用ASP.NET ajax都要先注册一个类
在page_load事件AjaxPro.Utility.RegisterTypeForAjax(typeof([类名]));
然后在前台JS里面用类名+方法使用AJAX方法:[类名].PublishTopic()
稍微有点无敌 2007-09-04
  • 打赏
  • 举报
回复
是报错还是返回为空啊?
如果是返回为空,你需要跟踪一下啊
forideal 2007-09-04
  • 打赏
  • 举报
回复
这个数据库调用方法肯定没有错的,都用几年了
brio8425 2007-09-04
  • 打赏
  • 举报
回复
调试的过程最好是把try catch 去掉。。通过了在加上去。不然不知道那里有错误~

forideal 2007-09-04
  • 打赏
  • 举报
回复
楼上的兄弟,你测试一下那样行得通不??!!
feng5799 2007-09-04
  • 打赏
  • 举报
回复
_Default.PublishTopic(LeaveWord_CallBack);
....
应该是LeaveWord_CallBack(_Default.PublishTopic)才对啊...
forideal 2007-09-04
  • 打赏
  • 举报
回复
忘记贴了一段js

window.onload = function() {
$("btnLeaveWord").onclick = LeaveWord;
}

function LeaveWord() {
if($F("txtAuthor") == "") {
alert("请输入您的姓名!");
$("txtAuthor").focus();
return false;
}
else if($F("txtContent") == "") {
alert("请输入留言内容!");
$("txtContent").focus();
return false;
}

_Default.PublishTopic(LeaveWord_CallBack);
}

function LeaveWord_CallBack(ref) {
alert(ref.value);
//ifrLeaveWord.window.location.reload();
//$("Form1").reset();
}

测试了很多次,访问都是无法执行ExecuteNonQuery这个方法,但是,只有在后台里调用就可以
feng5799 2007-09-04
  • 打赏
  • 举报
回复
1.在page_load事件AjaxPro.Utility.RegisterTypeForAjax(typeof([类名]));

2.LeaveWord_CallBack()中
alert([类名].PublishTopic().value);
jiangmin168168 2007-09-04
  • 打赏
  • 举报
回复
//项目命名空间.类命.方法命
应该是:
//项目命名空间.类名.方法名
jiangmin168168 2007-09-04
  • 打赏
  • 举报
回复
function LeaveWord_CallBack(ref) {
alert(ref.value);
//ifrLeaveWord.window.location.reload();
//$("Form1").reset();
}
这个方法并没有调用后台CS中的方法啊,我是这样调用的
function LeaveWord_CallBack() {
//项目命名空间.类命.方法命
//如:
MyWebSite.NewPage.PublishTopic();
}
这样才行.你设置一下断点试一下.
feng5799 2007-09-04
  • 打赏
  • 举报
回复
额~~请问楼主在哪里调用PublishTopic()这个方法了啊?????
jiangmin168168 2007-09-04
  • 打赏
  • 举报
回复
SF
heqi915 2007-09-04
  • 打赏
  • 举报
回复
mark一下

为了裤衩而努力

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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