Как я могу выбрать технику Ajax - PullRequest
0 голосов
/ 18 октября 2010

У меня есть проект, в котором сервер прослушивает порт 9999. Первоначально клиент является флэш-программой, которая использует XML для связи с сервером.Теперь я хочу написать веб-клиент к нему (HTML).Я хочу сделать как можно меньше изменений на стороне сервера.

Я думаю, используя чистый HTML + AJAX.Проблема, с которой я сталкиваюсь:

1) Могу ли я отправить xml со стороны клиента и дождаться ответа?Если да, то какой самый эффективный способ его разработки?

2) Я думаю, что весь xml, отправленный клиентом, встроен в HTTP-запрос, но мой сервер вообще не знал HTTP.Нужно ли мне модифицировать свой сервер, чтобы он стал CGI-программой?

Есть ли для меня какая-нибудь хорошая структура для начала?

Ответы [ 5 ]

1 голос
/ 18 октября 2010

Поскольку неясно, какой у вас сервер (возможно, он основан на сокетах java или C / C ++), если это правда, вы можете адаптировать его для использования протокола HTTP, тогда вы можете использовать код javascript на клиенте. сторона для запроса к серверу с помощью JSON (вы должны предпочесть JSON, а не XML, потому что он проще и лежит в основе языка JavaScript). В частности, я нашел библиотеку Prototype.js очень эффективной и простой:

function doAJAXRequest(url, t_method, v_parameters, p_onsuccessfunction, p_onloadingfunction) {
    url = url + "?" + "randNum" + getRandom();
    var objAjax = new Ajax.Request( url, { method: t_method, parameters: v_parameters,  onLoading: p_onloadingfunction, 
                                           onSuccess: p_onsuccessfunction, onFailure: onfailureAjx } );
}
function setAJAXResultInElement(objRequest, elementId){ $(elementId).innerHTML = objRequest.responseText; }
function onloadingAjx(){ /*...*/ }
function onsuccessAjx(){ /*...*/ }
function onfailureAjx(objRequest) { setAJAXResultInElement(objRequest, "div_main_result"); }

Чтобы узнать больше о прототипе, обратитесь к: http://www.prototypejs.org/learn/introduction-to-ajax

1 голос
/ 18 октября 2010

Я вижу здесь множество ответчиков, в которых упоминается «отправить запрос ajax и дождаться ответа».A в Ajax означает асинхронный, это означает, что вы не отправляете запрос и ждете ответа.Вы просто отправляете это, и вот, ответ может прийти в течение 100 мс, 3 секунд или завтра или никогда.Если вам нужно подождать что-то, пока оно не придет, чтобы продолжить вычисления или что-то еще, тогда вам нужно выполнить обычный запрос HTTP POST или GET.

1) Да, вы можете отправитьXML из JavaScript (вы можете отправлять все что угодно), вы можете получать и обрабатывать его любым удобным для вас способом, предпочтительно с помощью jQuery, что упрощает его и обеспечивает поддержку различных браузеров.

2) Как это можно встроить в HTTP-запрос, если ваш сервер вообще не знает HTTP !?

Мы могли бы дать гораздо лучшие и подробные ответы, если вы ответите «что вы пытаетесь сделать и почему»?Как именно выглядит ваша текущая настройка, какой сервер на порту 9999?

1 голос
/ 18 октября 2010

Если ваш сервер использует XML, у вас должна быть возможность отправлять XML по HTTP, без проблем. Вы можете отправить это через клиента, используя AJAX или даже обычный POST / GET, а затем ждать ответа, чтобы что-то с ним сделать.

Я не думаю, что вам нужно менять свой сервер, чтобы сделать что-то другое.

Вы можете написать код для выполнения AJAX (XMLHttpRequests) с простым Javascript (просто следите за различиями в браузере). Или вы можете использовать такую ​​инфраструктуру, как jQuery , которая облегчит вашу работу, но это может быть излишним, если вы только захотите сделать несколько вызовов AJAX и обработать ответ.

1 голос
/ 18 октября 2010

1) Да, вам нужно отправить запрос ajax и дождаться ответа. Я предлагаю вам заглянуть в JQuery для этого. Написание собственных основ Ajax - это PITA. Переход на обычный запрос / ответ (не-ajax) не сработает, если вы спросите меня, так как вы возвращаете XML. Но это нормально, с Аяксом все будет хорошо.

2) Ваш веб-клиент поддерживает HTTP и только HTTP. Вам нужно будет изменить свой сервер (или поместить что-то перед ним), который принимает запросы HTTP и отправляет ваш XML в ответ. HTTP - довольно простой протокол, так что вы, вероятно, можете сделать это самостоятельно, если вам действительно нужно (я сделал это один раз).

0 голосов
/ 18 октября 2010

Я понятия не имею, что касается вопроса 2, но я знаю, что вы можете использовать $.post(url, data); для отправки данных на сервер, или вы можете использовать $(selector).load(url-with-query-string); для достижения желаемого результата. Просто настройте страницу, которая правильно обрабатывает данные, а затем сделайте вызов или отправьте вызов со страницы, на которой в данный момент используется Flash.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...