Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.Net -> Web Service + AJAX / 18 сообщений из 18, страница 1 из 1
01.08.2006, 16:02
    #33892450
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Теперь у меня возникла следующая проблема. У меня есть на форме кнопка и по ее нажатию у меня должно измениться содержимое какого либо контейнера.
Например если это обычный контрол (не асп) то я пишу так:

<input id="bttnLoadToDropDown" type="button" value="Загрузить список" onClick="SendQuery()" /><br />

а функция SendQuery выглядит след образом:

<script type="text/javascript">
function SendQuery()
{
WebService.HelloWorld(onRequestComplete);
}
function onRequestComplete(result)
{
var ourDiv = document.getElementById("Label1");
ourDiv.innerHTML = result;
}
</script>

Это все прекрасно работает без перезагрузки страницы, т.е перезагружается только то, что мне нужно.
Но стоит мне создать ASP контрол (например кнопку):

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

а в обработчике написать:

protected void Button1_Click(object sender, EventArgs e)
{
localhost.WebService serv = new localhost.WebService();
Label1.Text = serv.HelloWorld();
}

то страничка соответственно начинает перезагружаться. В связи с этим у меня возникает такой вопрос: Как на ASP.Net (C#) вызвать веб сервис и не перезагружать полностью страницу т.е использовать технологию AJAХ посредством ASP. В интернете я нашел ссылки на Atlas Framework, но примеры в нем почему то были тоже на javascript. Во всех источниках которые я нашел были только javascript, который я продемонстрировал в первом примере, но он меня не устраивает.
Как быть? Может я чего то непонимаю?
...
Рейтинг: 0 / 0
01.08.2006, 17:17
    #33892732
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Button1.Attributes["onclick"] = "SendQuery()";
или <input id="bttnLoadToDropDown" runat=server ....>


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
01.08.2006, 21:15
    #33893157
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Ты меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA. Мне скорее всего нужно каким то образом модифицировать этот блок:

protected void Button1_Click(object sender, EventArgs e)
{
localhost.WebService serv = new localhost.WebService();
Label1.Text = serv.HelloWorld();
}

но я не знаю как.
Какие будут соображения.
...
Рейтинг: 0 / 0
01.08.2006, 23:04
    #33893227
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
UP
...
Рейтинг: 0 / 0
02.08.2006, 01:11
    #33893274
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
хм... скорее всего вы сами не понимаете что хотите сделать :)

что бы попасть в блок protected void Button1_Click нужно отправить запрос на сервер, что соответственно перегрузит
страницу... можно, конечно, засунуть это во фрэйм... только причем тогда здесь ajax?
да, и очень интересно услышать, чем не устраивает java-script?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.08.2006, 07:08
    #33893334
dmMagic.NET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Добрый день!

Если Вы только начали программировать и хотите получать данные с сервера без перезагрузки, то действительно Вы можете использовать технологии Web Service, Ajax, Atlas. Но как показывает практика, на первоначальном этапе разобраться со всем этим бывает не так просто.
Как некую альтернативу предлагаю посмотреть методы
Page.ClientScriptManager.GetCallbackEventReference

Это позволит Вам зарегистрировать на странице скрипт обратных вызовов. Т.е. вам необходимо будет указать скрипт, который отправляет данные на сервер, скрипт, который будет выполнен при получении данных с сервера и скрипт при возникновении ошибки. Очень хороший простой пример (MSDN 2005):

ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref13/html/M_System_Web_UI_ClientScriptManager_GetCallbackEventReference_2_72b04016.htm

Ну, это как альтернатива. Причем, думаю, запрограммировать сможете меньше чем за час.

Разработка для EMC Documentum
http://www.dmmagic.net
...
Рейтинг: 0 / 0
02.08.2006, 07:38
    #33893359
Stray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Ты меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA. Мне скорее всего нужно каким то образом модифицировать этот блок:

protected void Button1_Click(object sender, EventArgs e)
{
localhost.WebService serv = new localhost.WebService();
Label1.Text = serv.HelloWorld();
}

но я не знаю как.
Какие будут соображения.

Без javascript никак! На то он и AJAX!
...
Рейтинг: 0 / 0
02.08.2006, 14:24
    #33894707
Den!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
mr_alfТы меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA...


Буква "J" в аббревиатуре "AJAX" обозначает "JavaScript", кажись.

Имхо, AJAX без явы, тоже что Active Server Pages без сервера :)
...
Рейтинг: 0 / 0
02.08.2006, 14:43
    #33894792
Stray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
mr_alfТы меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA...


Буква "J" в аббревиатуре "AJAX" обозначает "JavaScript", кажись.

Имхо, AJAX без явы, тоже что Active Server Pages без сервера


A synchronous J avaScript A nd X ML

Эт чоб не казалось..
...
Рейтинг: 0 / 0
02.08.2006, 22:38
    #33895881
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
For Stray and profi
AJAX - это действительно Asynchronous JavaScript And XML, но мне показалось из прочитанных мною сайтов, что сейчас многие так называют просто методологию доступа к странцам, когда происходит частичная смена содержимого страницы. Асинхронный вызов (помоему это так называется).

For dmMagic.NET
К сожаления у я не смог найти эту ветку в MSDN. Не могли бы вы скопировать ее сюда.
...
Рейтинг: 0 / 0
03.08.2006, 06:22
    #33896085
dmMagic.NET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Конечно, если только все это дело сюда вставится. Это ASP.NET 2 !
Тут два примера с разным синтаксисом. Один сразу выкиньте, чтобы проще понять...

<%@ Page Language="C#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
   
    public int cbCount = 0;
   
    // Define method that processes the callbacks on server.
    public void RaiseCallbackEvent(String eventArgument)
    {
        cbCount = Convert.ToInt32(eventArgument) + 1;
    }
    // Define method that returns callback result.
    public string GetCallbackResult()
    {
        return cbCount.ToString();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Define a StringBuilder to hold messages to output.
        StringBuilder sb = new StringBuilder();
        // Check if this is a postback.
        sb.Append("No page postbacks have occurred.");
        if (Page.IsPostBack)
        {
            sb.Append("A page postback has occurred.");
        }
        // Write out any messages.
        MyLabel.Text = sb.ToString();
        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        // Define one of the callback script's context.
        // The callback script will be defined in a script block on the page.
        StringBuilder context1 = new StringBuilder();
        context1.Append("function ReceiveServerData1(arg, context)");
        context1.Append("{");
        context1.Append("Message1.innerText =  arg;");
        context1.Append("value1 = arg;");
        context1.Append("}");
        // Define callback references.
        String cbReference1 = cs.GetCallbackEventReference(this, "arg",
            "ReceiveServerData1", context1.ToString());
        String cbReference2 = cs.GetCallbackEventReference("'" +
            Page.UniqueID + "'", "arg", "ReceiveServerData2", "",
            "ProcessCallBackError", false);
        String callbackScript1 = "function CallTheServer1(arg, context) {" +
            cbReference1 + "; }";
        String callbackScript2 = "function CallTheServer2(arg, context) {" +
            cbReference2 + "; }";
        // Register script blocks will perform call to the server.
        cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer1",
            callbackScript1, true);
        cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer2",
            callbackScript2, true);
    }
</script>
<script type="text/javascript">
var value1 = 0;
var value2 = 0;
function ReceiveServerData2(arg, context)
{
    Message2.innerText = arg;
    value2 = arg;
}
function ProcessCallBackError(arg, context)
{
    Message2.innerText = 'An error has occurred.';
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ClientScriptManager Example</title>
</head>
<body>
    <form id="Form1"
          runat="server">
    <div>
      Callback 1 result: <span id="Message1">0</span>
      <br />
      Callback 2 result: <span id="Message2">0</span>
      <br /> <br />
      <input type="button"
             value="ClientCallBack1"
             onclick="CallTheServer1(value1, alert('Increment value'))"/>   
      <input type="button"
             value="ClientCallBack2"
             onclick="CallTheServer2(value2, alert('Increment value'))"/>
      <br /> <br />
      <asp:Label id="MyLabel"
                 runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>
Разработка для EMC Documentum
http://www.dmmagic.net
...
Рейтинг: 0 / 0
03.08.2006, 11:59
    #33896744
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Я попробовал ваш пример. Да он работает. Но у меня не получается сделать кнопку ASP. Т.е при нажатии на ASP контрол кнопку чтобы происходило тоже самое. Я не знаю синтаксиса.
Вот так конечно же не работает:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="CallTheServer1(value1, alert('Increment value'))"/>
Как надо?
...
Рейтинг: 0 / 0
03.08.2006, 12:28
    #33896842
Stray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Я попробовал ваш пример. Да он работает. Но у меня не получается сделать кнопку ASP. Т.е при нажатии на ASP контрол кнопку чтобы происходило тоже самое. Я не знаю синтаксиса.
Вот так конечно же не работает:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="CallTheServer1(value1, alert('Increment value'))"/>
Как надо?
Что-то ты все в кучу собрал...
Зачем тебе контрол Button? Да еще с выполнением на стороне сервера?
(обновление страницы целиком - чего ты пытаешься избежать с помощью AJAX)

Клиентский скрипт вызывается кнопкой <INPUT type="button"> например... А в целом на что угодно можно повесить вызов.... Частенько на таймер вешают.

Но не на серверные контролы!
...
Рейтинг: 0 / 0
03.08.2006, 13:12
    #33897008
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
А что разьве контролы ASP.NET обязательно должны обрабатываться сервером? Если так то извините за ту глупость которую я здесь нес :)
Но поймите меня правильно - Я УЧУСЬ
...
Рейтинг: 0 / 0
03.08.2006, 13:50
    #33897172
Stray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
А что разьве контролы ASP.NET обязательно должны обрабатываться сервером? Если так то извините за ту глупость которую я здесь нес

Но поймите меня правильно - Я УЧУСЬ

Если ты работаешь в Visual Studio то для примера положи Web Forms контрол
(тот же Button) на свою форму. перейди в режим HTML, найди его и убери строчку runat="server". Вернись в Design режим. Что видишь?

Это ответ на твой вопрос.
...
Рейтинг: 0 / 0
03.08.2006, 14:10
    #33897262
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Спасибо за наставления на путь истинный. Буду изучать дальше.
...
Рейтинг: 0 / 0
03.08.2006, 16:06
    #33897782
dmMagic.NET
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
Вроде как этот пример и должен был тебе помочь сделать, то что ты хочешь.

1. Если ты делаешь серверную кнопку, то для этого должна произойти отправка страницы.
2. Поэтому размещаем НЕ серверную кнопку.
Вешаем на нее скрипт который отправляет данные на сервер.
На сервере метод получает данные (в виде текстовой строки) Делаешь какую угодно обработку (лезешь в базу и т.д. и т.п.) Отправляешь данные обратно.
Второй скрипт получает твои данные (в виде текстовой строки)
Делаешь какую угодно обработку на стороне клиента
Страница как была, так и осталась.

Причем как видно кода практически и нет. На одной страничке все уместилось...

Разработка для EMC Documentum
http://www.dmmagic.net
...
Рейтинг: 0 / 0
03.08.2006, 17:23
    #33898124
mr_alf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.Net -> Web Service + AJAX
****размещаем НЕ серверную кнопку**** т.е. не ASP.
В этом то и была моя грубейшая ошибка. Я бился в закрытую дверь. Аналогичный пример который вы мне показали я как раз и пробовал когда только задался целью обновления старницы без перезагрузки.
Спасибо!!!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.Net -> Web Service + AJAX / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]