2010-10-18 86 views
0

我有一个项目,它有一个服务器在端口9999上侦听。客户端最初是一个Flash程序,它使用XML与服务器通信。现在我想写一个web客户端(html)。我想在服务器端尽可能少地进行修改。如何选择Ajax技术

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

1)我可以从客户端发送xml并等待响应吗?如果是这样,哪种开发方式最有效?

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

我有什么好的框架开始?

回答

1

因为它没有明确你的服务器是什么样的(可能它是基于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

0

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

希望这会有所帮助。

+0

提问者使用jQuery – 2010-10-18 06:20:00

+0

阿不提呀,问题是,对于一些愚蠢的原因,我似乎总是认为AJAX和jQuery的为同样的事情...不要问我为什么 - 我只是做。但是,如果他可以使用jQuery,那么他可以使用这种方法。 – ClarkeyBoy 2010-10-18 06:21:47

1

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

我不认为你需要改变你的服务器做任何不同的事情。

您可以编写代码以使用纯Javascript执行AJAX(XMLHttpRequests)(只需确保满足浏览器差异)。或者你可以使用一个像jQuery这样的框架,这会让你的工作变得更容易,但如果你只想做几个AJAX调用并处理响应,那么它可能是过度的。

+0

我想POST目的地是HTTP服务器,我想HTTP服务器的剥离数据发送过来。 – 2010-10-18 06:47:42

1

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

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

1

我在这里看到很多回答,提到“发送ajax请求并等待响应”。 Ajax中的A代表异步,这意味着您不发送请求并且等待作为响应。你只需发送它,这就是它,响应可以在100ms,3秒或明天或从不。如果你需要等待的东西,直到它来继续你的计算或任何,然后你需要做一个正常的HTTP POST或GET请求。 1)是的,你可以从JavaScript发送XML(你可以发送任何东西),你可以以任何你喜欢的方式接收和处理它,最好使用jQuery来完成,这使得它更简单,并提供跨浏览器支持。

2)如何在HTTP请求中嵌入HTTP请求,而服务器根本不知道HTTP?

,如果你的回答是“你有什么做的,为什么”我们可以给更好的和详细的解答?究竟如何目前设定的样子,是什么在端口9999的服务器?