前几天我找到了this AJAX .NET framework,到目前为止我很享受与它合作。但是,我无法弄清楚的一件事(文档相当差的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传递变量有任何见解?我们也欢迎其他方法!
答案 0 :(得分: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 :(得分: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;
}
答案 2 :(得分:0)
我使用该框架已经有一段时间了(版本6.9.22.2,所以事情可能会有所改变) - 你看过ASP.NET AJAX framework吗?我不确定迈克尔自从这个问题出现以来做了多少工作 - 他的博客文章在2007年7月左右就已经枯竭了。
无论如何,如果我理解你的问题,你想:
首先,要将变量传递给您的方法,它们不应该出现在回调函数的名称之前吗?
要在回调中检索初始值,我要么:
使用选项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的值很可能已经改变。
答案 3 :(得分:0)
嗯。您是否注意到任何JavaScript错误?如果您安装了Firefox并FireBug,那么JavaScript控制台中是否有任何错误?
听起来组件生成的JS文件有问题。