Передача переменных с помощью AjaxPro

На днях я нашел этот фреймворк 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? Также приветствуются альтернативные методы!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
3 105
4

Ответы 4

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

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

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

В 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);
}

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

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

Как это:

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

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

Другие вопросы по теме