我如何选择Ajax技术

时间:2010-10-18 05:59:40

标签: html ajax

我有一个项目,它有一个服务器侦听端口9999.最初客户端是一个flash程序,它使用XML与服务器通信。现在我想写一个Web客户端(html)。我想在服务器端尽可能少地进行修改。

我在想使用纯html + ajax。我面临的问题是:

1)我可以从客户端发送xml并等待响应吗?如果是这样,开发它的最有效方法是什么?

2)我认为从客户端发送的所有xml都嵌入在HTTP请求中,但我的服务器根本不知道HTTP。我是否需要将我的服务器修改为CGI程序?

我开始有什么好的框架吗?

5 个答案:

答案 0 :(得分:1)

如果您的服务器使用XML,您应该能够通过HTTP发送XML,没问题。您可以使用AJAX或甚至普通的POST / GET通过客户端发送此消息,然后等待响应对其执行某些操作。

我认为您不需要更改服务器以执行任何其他操作。

您可以使用普通Javascript编写代码来执行AJAX(XMLHttpRequests)(只需确保满足浏览器差异)。或者您可以使用像jQuery这样的框架,这会让您的工作更轻松,但如果您只想进行一些AJAX调用并处理响应,则可能会有些过分。

答案 1 :(得分:1)

1)是的,您将不得不发送ajax请求并等待响应。我建议你研究一下JQuery。编写自己的Ajax基础是PITA。如果你问我,那么正常的请求/响应(非ajax)将不会飞,因为你正在返回XML。但是没关系,Ajax会很好。

2)您的Web客户端会谈HTTP和HTTP。您将需要修改接受HTTP请求的服务器(或在其前面放置一些内容)并发送您的XML作为响应。 HTTP是一个非常简单的协议,所以你可以自己做这个,如果你真的需要(我做过一次)。

答案 2 :(得分:1)

我在这里看到很多回答提到“发送ajax请求并等待响应”。 Ajax中的A代表异步,它意味着您不发送请求并等待以获得响应。你发送它,就是这样,响应可以在100毫秒,3秒或明天或永远不会发生。如果您需要等待某事,直到它继续您的计算或其他任何事情,那么您需要执行正常的HTTP POST或GET请求。

1)是的,您可以从JavaScript发送XML(您可以发送任何内容),您可以按照自己喜欢的方式接收和处理它,最好使用jQuery,这样可以简化并为您提供跨浏览器支持。

2)如果没有服务器根本不知道HTTP,它如何嵌入到HTTP请求中?

如果你回答'你想做什么以及为什么',我们可以提供更好更详细的答案?您当前的设置究竟是什么样的,9999端口的服务器是什么?

答案 3 :(得分:1)

因为不清楚你的服务器是什么类型的(可能是基于java或C / C ++套接字),如果是真的你可以调整它以使用HTTP协议,那么你可以在客户端上使用javascript代码通过JSON请求服务器的一方(您首先应该优先选择基于XML的JSON,因为它更简单并且是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

答案 4 :(得分:0)

我不知道问题2,但我知道您可以使用$.post(url, data);将数据发送到服务器,或者您可以使用$(selector).load(url-with-query-string);来获得所需的结果。只需设置一个正确处理数据的页面,然后从当前具有Flash内容的页面进行get或post调用。

希望这有帮助。