2009-01-07 269 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; 
}