Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Теперь у меня возникла следующая проблема. У меня есть на форме кнопка и по ее нажатию у меня должно измениться содержимое какого либо контейнера. Например если это обычный контрол (не асп) то я пишу так: <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, который я продемонстрировал в первом примере, но он меня не устраивает. Как быть? Может я чего то непонимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 16:02 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Button1.Attributes["onclick"] = "SendQuery()"; или <input id="bttnLoadToDropDown" runat=server ....> Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 17:17 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Ты меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA. Мне скорее всего нужно каким то образом модифицировать этот блок: protected void Button1_Click(object sender, EventArgs e) { localhost.WebService serv = new localhost.WebService(); Label1.Text = serv.HelloWorld(); } но я не знаю как. Какие будут соображения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 21:15 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
хм... скорее всего вы сами не понимаете что хотите сделать :) что бы попасть в блок protected void Button1_Click нужно отправить запрос на сервер, что соответственно перегрузит страницу... можно, конечно, засунуть это во фрэйм... только причем тогда здесь ajax? да, и очень интересно услышать, чем не устраивает java-script? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 01:11 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Добрый день! Если Вы только начали программировать и хотите получать данные с сервера без перезагрузки, то действительно Вы можете использовать технологии 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 07:08 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Ты меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA. Мне скорее всего нужно каким то образом модифицировать этот блок: protected void Button1_Click(object sender, EventArgs e) { localhost.WebService serv = new localhost.WebService(); Label1.Text = serv.HelloWorld(); } но я не знаю как. Какие будут соображения. Без javascript никак! На то он и AJAX! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 07:38 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
mr_alfТы меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA... Буква "J" в аббревиатуре "AJAX" обозначает "JavaScript", кажись. Имхо, AJAX без явы, тоже что Active Server Pages без сервера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 14:24 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
mr_alfТы меня маленько не понял. Так как ты говоришь я делал и так конечно же работает. Но я как раз и хочу сделать без использования JAVA... Буква "J" в аббревиатуре "AJAX" обозначает "JavaScript", кажись. Имхо, AJAX без явы, тоже что Active Server Pages без сервера A synchronous J avaScript A nd X ML Эт чоб не казалось.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 14:43 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
For Stray and profi AJAX - это действительно Asynchronous JavaScript And XML, но мне показалось из прочитанных мною сайтов, что сейчас многие так называют просто методологию доступа к странцам, когда происходит частичная смена содержимого страницы. Асинхронный вызов (помоему это так называется). For dmMagic.NET К сожаления у я не смог найти эту ветку в MSDN. Не могли бы вы скопировать ее сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 22:38 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Конечно, если только все это дело сюда вставится. Это 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 06:22 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Я попробовал ваш пример. Да он работает. Но у меня не получается сделать кнопку ASP. Т.е при нажатии на ASP контрол кнопку чтобы происходило тоже самое. Я не знаю синтаксиса. Вот так конечно же не работает: <asp:Button ID="Button1" runat="server" Text="Button" onclick="CallTheServer1(value1, alert('Increment value'))"/> Как надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 11:59 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Я попробовал ваш пример. Да он работает. Но у меня не получается сделать кнопку ASP. Т.е при нажатии на ASP контрол кнопку чтобы происходило тоже самое. Я не знаю синтаксиса. Вот так конечно же не работает: <asp:Button ID="Button1" runat="server" Text="Button" onclick="CallTheServer1(value1, alert('Increment value'))"/> Как надо? Что-то ты все в кучу собрал... Зачем тебе контрол Button? Да еще с выполнением на стороне сервера? (обновление страницы целиком - чего ты пытаешься избежать с помощью AJAX) Клиентский скрипт вызывается кнопкой <INPUT type="button"> например... А в целом на что угодно можно повесить вызов.... Частенько на таймер вешают. Но не на серверные контролы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:28 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
А что разьве контролы ASP.NET обязательно должны обрабатываться сервером? Если так то извините за ту глупость которую я здесь нес :) Но поймите меня правильно - Я УЧУСЬ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:12 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
А что разьве контролы ASP.NET обязательно должны обрабатываться сервером? Если так то извините за ту глупость которую я здесь нес Но поймите меня правильно - Я УЧУСЬ Если ты работаешь в Visual Studio то для примера положи Web Forms контрол (тот же Button) на свою форму. перейди в режим HTML, найди его и убери строчку runat="server". Вернись в Design режим. Что видишь? Это ответ на твой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:50 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Спасибо за наставления на путь истинный. Буду изучать дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 14:10 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
Вроде как этот пример и должен был тебе помочь сделать, то что ты хочешь. 1. Если ты делаешь серверную кнопку, то для этого должна произойти отправка страницы. 2. Поэтому размещаем НЕ серверную кнопку. Вешаем на нее скрипт который отправляет данные на сервер. На сервере метод получает данные (в виде текстовой строки) Делаешь какую угодно обработку (лезешь в базу и т.д. и т.п.) Отправляешь данные обратно. Второй скрипт получает твои данные (в виде текстовой строки) Делаешь какую угодно обработку на стороне клиента Страница как была, так и осталась. Причем как видно кода практически и нет. На одной страничке все уместилось... Разработка для EMC Documentum http://www.dmmagic.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 16:06 |
|
||
|
ASP.Net -> Web Service + AJAX
|
|||
|---|---|---|---|
|
#18+
****размещаем НЕ серверную кнопку**** т.е. не ASP. В этом то и была моя грубейшая ошибка. Я бился в закрытую дверь. Аналогичный пример который вы мне показали я как раз и пробовал когда только задался целью обновления старницы без перезагрузки. Спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 17:23 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33895881&tid=1390994]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 363ms |

| 0 / 0 |
