0

前几天我发现了这个 AJAX .NET 框架,到目前为止我很享受使用它。但是,我无法弄清楚的一件事(文档是相当糟糕的 atm)是如何通过 AJAX 脚本传递变量。这是我到目前为止所拥有的:

//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 传递变量?也欢迎替代方法!

4

4 回答 4

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;
}
于 2012-12-21T20:29:01.753 回答
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);
}
于 2010-01-20T00:11:50.493 回答
0

我使用那个框架已经有一段时间了(版本 6.9.22.2,所以情况可能发生了一些变化)——你看过ASP.NET AJAX 框架吗?我不知道 Michael 在这件事上做了多少工作——当然,他关于这件事的博客文章在 2007 年 7 月左右就枯竭了。

无论如何,如果我理解你的问题,你想:

  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 的值很可能已经改变。

于 2009-01-07T15:42:18.820 回答
0

唔。您是否注意到任何 JavaScript 错误?如果您安装了 Firefox 和FireBug,JavaScript 控制台中是否有任何错误?

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

于 2009-01-07T17:27:19.327 回答