Передача переменных с помощью AjaxPro - PullRequest
0 голосов
/ 07 января 2009

На днях я нашел эту среду AJAX .NET , и до сих пор мне нравится работать с ней. Однако, одна вещь, которую я не могу понять (документация довольно скудная) - как передавать переменные через скрипт 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 ]

1 голос
/ 22 декабря 2012

Я знаю, что это старый, но я использовал AjaxPro навсегда и все еще использую его с .NET 4 - он все еще делает свое дело.

Если вы хотите передать дополнительную переменную с помощью обратного вызова и вернуть ее в результат, передайте значение после обратного вызова и используйте res.context для его получения.

Как это:

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

function CallbackFunction(res)
{
  var result = res.value;
  var extra = res.context;
}
1 голос
/ 20 января 2010

С 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);
}
0 голосов
/ 07 января 2009

Хм. Вы заметили какие-либо ошибки JavaScript? Если у вас установлены Firefox и FireBug , есть ли ошибки в консоли JavaScript?

Похоже, что-то не так с сгенерированными файлами JS из компонента.

0 голосов
/ 07 января 2009

Прошло много времени с тех пор, как я использовал эту платформу (версия 6.9.22.2, поэтому, возможно, все немного изменилось) - вы взглянули на ASP.NET AJAX framework ? Я не уверен, сколько работы Майкл проделал над этим с тех пор, как он вышел - конечно, его сообщения в блоге об этом иссякли примерно в июле 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" с другим значением, пока вы еще обрабатываете первый запрос, значение initialValue вполне могло бы измениться к тому времени, когда оно запрашивается в doTest_callback.

...