求助请各位使用过 Ajax 的朋友帮忙,我使用 AjaxPro2.Dll (下载http://ajaxpro.info/ 中9[1].2.17.1_DLL的版本)作了一个调用后台的实例,总是出“缺少对象”的异常,请帮我看一些是代码问题(我自认为没有问题);还是AjaxPro2.Dll 的问题,那如何解决,或者下载更好的 AjaxPro2.Dll 。
1、Web.config 配置......
<httpHandlers>
......
<add verb="POST,GET" path="AjaxPro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
......
2、后台函数namespace ajax_test
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(ajax_test._Default)); }
[AjaxPro.AjaxMethod()]
public string TestData()
{
string msg = "一般服务人员@J01410202200904230002@5A647FA4@梦拉丽沙@J0111010000001@2009-04-28 09:23:19@2009-04-28 10:37:55@记录‘梦拉丽沙’成功";
return msg;
}
}
}3、前台代码<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ajax_test._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title> <script language="javascript" type="text/javascript">
function readcard() {
var str = "";
//var dstr = new Array();
str = ajax_test._Default.TestData(); // 调用后台函数
//dstr = str.value.split("@", 8);
//alert(dstr[0]);
}
</script></head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Ok" onclick="return readcard();" />
</div>
</form>
</body>
</html>4、运行结果1).net 系统提示“Microsoft JScript 运行时错误:缺少对象”2)代码定位到 core.ashx(动态) 文件中,其代码为: timeout: function() {
this.duration = new Date().getTime() - this.__start;
var r = this.onTimeout(this.duration, this); // <<<<<<< 定位到此行
if(typeof r == "undefined" || r != false) {
this.abort();
} else {
this.timeoutTimer = setTimeout(this.timeout.bind(this), AjaxPro.timeoutPeriod);
}
},
1、Web.config 配置......
<httpHandlers>
......
<add verb="POST,GET" path="AjaxPro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
......
2、后台函数namespace ajax_test
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(ajax_test._Default)); }
[AjaxPro.AjaxMethod()]
public string TestData()
{
string msg = "一般服务人员@J01410202200904230002@5A647FA4@梦拉丽沙@J0111010000001@2009-04-28 09:23:19@2009-04-28 10:37:55@记录‘梦拉丽沙’成功";
return msg;
}
}
}3、前台代码<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ajax_test._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title> <script language="javascript" type="text/javascript">
function readcard() {
var str = "";
//var dstr = new Array();
str = ajax_test._Default.TestData(); // 调用后台函数
//dstr = str.value.split("@", 8);
//alert(dstr[0]);
}
</script></head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Ok" onclick="return readcard();" />
</div>
</form>
</body>
</html>4、运行结果1).net 系统提示“Microsoft JScript 运行时错误:缺少对象”2)代码定位到 core.ashx(动态) 文件中,其代码为: timeout: function() {
this.duration = new Date().getTime() - this.__start;
var r = this.onTimeout(this.duration, this); // <<<<<<< 定位到此行
if(typeof r == "undefined" || r != false) {
this.abort();
} else {
this.timeoutTimer = setTimeout(this.timeout.bind(this), AjaxPro.timeoutPeriod);
}
},
var r = this.onTimeout(this.duration, this);
为
var r = this.timeout(this.duration, this);
并修改 Web.config 为
......
<httpHandlers>
......
<add verb="POST,GET" path="AjaxPro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
......
编译生成 AjaxPro.DLL ,将它复制到项目下,运行项目,不提示“缺少对象”异常,但出现“堆栈溢出”,是否还有其它需要修改?
<httpHandlers>
<add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
</httpHandlers> [注意]
以下为引用的内容:
可在web.config中配置<ajaxNet>段,中间包括<ajaxSettings><configuration/></ajaxSettings>
<configuration/>段中包括:
操作日期定义:
<renderNotASPAJAXDateTime/>
<renderDateTimeAsString/>
<noUtcTime/>
其它:
<objectExtendPrototype/>
<appCodeQualifiedFullName/>
<allowNumberBooleanAsString/>
<sessionStateDefaultNone/>
<includeMsgPrototype/>
<renderJsonCompliant/>
<useSimpleObjectNaming/>
不过日期转换后和转换前都会在后面带一个‘Z’(例:2000-01-01 01:01:01Z),否则转换失败。 2. C#后台代码块:
以下为引用的内容:
namespace MyNameSpace{
public class MyClass : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e){
AjaxPro.Utility.RegisterTypeForAjax(typeof(MyClass));
} [AjaxPro.AjaxMethod]
public string MyMethod(string arg01,string arg02){ //注意,此处的方法必须声明为public类型。
return (arg01 + arg02);
}
}
}
3. JS代码块:
以下为引用的内容:
/**
* 调用服务器端方法的JS函数。
*/
function demo(){
MyNameSapce.MyClass.MyMethod(arg01,arg02,callable_method); //callable_method为下面定义的函数。
}
/**
* 异步回调函数,如果不用这方法,则会出现缺少对象错误,
* 虽然不影响使用,但程序开发阶段时,很烦燥。
*/
function callable_method(v){
var result = v.value;
alert(result);
}
AjaxPro中可以用到Json的序列化和反序列化。(AjaxPro.JavaScriptSerializer和AjaxPro.JavaScriptDeserializer)
http://www.jzquan.com/a/prog/asp/200812253946.html
晕,不是修改
var r = this.timeout(this.duration, this); 是加上try catchhttp://hi.baidu.com/%D2%F4%C0%D6%BF%E1gg/blog/item/f2590699a49b0d0f6f068c7b.html