2009-01-07 218 views
0

前几天我发现了this AJAX .NET framework,到目前为止,我很享受与它合作。然而,我无法弄清楚的一件事(文档是相当贫穷的atm)是如何通过AJAX脚本传递变量。这是我到目前为止有:通过AjaxPro传递变量

//default2.aspx.vb 
    <AjaxPro.AjaxMethod()> _ 
    Public Shared Function testSomething(ByVal value As String) As String 
    Return value 
    End Function 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    AjaxPro.Utility.RegisterTypeForAjax(GetType(Default2)) 
    End Sub 

//default2.aspx 
    <a href="#" onclick="doTest(1);">test something</a> 
    <div id="temp" style="margin:15px 15px 0px 5px; padding:10px;"></div> 
    <script type="text/javascript"> 
    function doTest(x){ 
     Default2.testSomething(doTest_callback,x) 
    } 
    function doTest_callback(res,x){ 
     alert(res.value); 
     document.getElementById("temp").innerHTML = ">>>> " + x + " <<<<" 
    } 
    </script> 

我有一对夫妇的是做工精细等测试功能,和他们做比较更复杂的操作。任何人都可以深入了解如何使用AjaxPro传递变量?替代方法也是受欢迎的!

回答

0

自从我使用该框架(版本6.9.22.2,因此情况可能有所变化),已经有一段时间了 - 您是否看过ASP.NET AJAX framework?我不知道有多少工作迈克尔做了这一点,因为说出来了 - certianly他的博客帖子大约是七月左右干涸2007

无论如何,如果我明白你的问题吧,你想:

  1. 值传递给你的服务器端方法
  2. 使用,在你的回调方法

首先看重的地方,将变量传递给你的方法,不应该他们来的回调函数的名称之前?

为了在回调检索初始值,我要么:

  1. 返回它们作为JSON返回对象
  2. 并将它们存储在一个变量中的两者的功能范围以外的部分

与选项2去,你必须:

<a href="#" onclick="doTest(1);">test something</a> 
<div id="temp" style="margin:15px 15px 0px 5px; padding:10px;"></div> 
<script type="text/javascript"> 
    var initialValue; 

    function doTest(x){ 
    initialValue= x; 
    Default2.testSomething(x, doTest_callback) 
    } 

    function doTest_callback(res){ 
    alert(res.value); 
    document.getElementById("temp").innerHTML = ">>>> " + initialValue + " <<<<" 
    } 
</script> 

主要缺点无线这是因为,如果用户在处理第一个请求时用不同的值激活了“doTest”方法,则在doTest_callback中查询时,initialValue的值可能已发生更改。

0

嗯。你有没有注意到任何JavaScript错误?如果您安装了Firefox和FireBug,那么JavaScript控制台中是否存在任何错误?

听起来好像组件生成的JS文件有问题。

1

使用AjaxPro,您首先传递参数并将回调函数作为最后一个参数传递。如果您在这里使用匿名函数,则可以访问响应和原始值。它会看起来是这样的:

function doTest(x){ 
    Default2.testSomething(x, function(res){ 
     doTest_callback(res.value, x); 
    }); 
} 
function doTest_callback(resonseValue,originalValue){ 
    alert("response: " + responseValue); 
    alert("original: " + originalValue); 
} 
1

我知道这是一个古老的一个,但我一直在使用永远和AjaxPro的仍与.NET 4中使用它 - 它仍然是卓有成效的。

如果您想通过回调传递一个额外的变量并将其返回到结果中,请在回调后传递该值并使用res.context来检索它。

像这样:

function CallSomething() 
{ 
    DoServerSide.MethodName(arg1, arg2, CallbackFunction, ExtraVar); 
} 

function CallbackFunction(res) 
{ 
    var result = res.value; 
    var extra = res.context; 
}