您是否想构建更具动态,响应式的,类似台式的Web应用程序(例如Gmail和Google Map)?然后,这篇文章是给您的!它可以指导您了解Ajax基础知识,并通过构建简单的Ajax应用程序的过程。
该应用程序被命名为WebConsole,这是一个用于执行系统命令的浏览器接口,您通常需要shell访问。也有使用两个流行的JavaScript库的AJAX功能的简短示例-JQuery和Yui。 在2005年首次发布并最近更新的本文中,我将解释一个简单,可重复使用的JavaScript功能,用于制作HTTP请求。然后,我将将该功能应用于创建简单的应用程序。
>尽管有一些Yui和jQuery示例,但本文不是特定Ajax库的教程。取而代之的是,它旨在为您提供有关提出HTTP请求的更多动手信息,以便在评估此类库或决定独自一人时处于更好的位置。
钥匙要点
>分配回调函数以处理HTTP响应。
> make(发送)请求。
>
在上面的示例中,我们需要一个全局变量,http_request,这是由makerequest()和alertcontents()函数都可以访问的,这在可重复使用性方面不好,并且可能会命名碰撞。理想情况下,MakereQuest()应执行请求,并且AlertContents()应呈现结果;两项功能都不需要知道或需要对方。
此函数接收三个参数:
<button >Make a request</button> <br> <br> <script type="text/javascript"> <br> <br> var http_request = false; <br> <br> function makeRequest(url) { <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7... <br> http_request = new XMLHttpRequest(); <br> } else if (window.ActiveXObject) { // IE6 and older <br> http_request = new ActiveXObject("Microsoft.XMLHTTP"); <br> } <br> http_request.onreadystatechange = alertContents; <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> <br> } <br> <br> function alertContents() { <br> if (http_request.readyState == 4) { <br> if (http_request.status == 200) { <br> alert(http_request.responseText); <br> } else { <br> alert('There was a problem with the request.'); <br> } <br> } <br> } <br> <br> document.getElementById('mybutton').onclick = function() { <br> makeRequest('test.html'); <br> } <br> <br> </script>
获得
的URL收到响应时要调用的功能
>
请注意如何传递回调函数的名称,而无需任何引号。
>您可以通过允许HTTP请求方法以及将作为参数传递给该功能的任何查询字符串,然后在调用中使用以打开()和发送()方法来使该功能更加重复使用。这还将允许您除了获得最初旨在执行的邮政请求。
>该功能的另一个功能是处理200以外的响应代码,如果您想更具体并根据返回的成功/错误代码的类型采取适当的操作,则可以方便。现在,让我们重做上一个示例,其中test.html文件的内容被警报()ed。这次,通过采用我们闪亮的新可重用请求函数,所使用的两个功能的修订版将更加简单:
><button >Make a request</button> <br> <br> <script type="text/javascript"> <br> <br> var http_request = false; <br> <br> function makeRequest(url) { <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7... <br> http_request = new XMLHttpRequest(); <br> } else if (window.ActiveXObject) { // IE6 and older <br> http_request = new ActiveXObject("Microsoft.XMLHTTP"); <br> } <br> http_request.onreadystatechange = alertContents; <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> <br> } <br> <br> function alertContents() { <br> if (http_request.readyState == 4) { <br> if (http_request.status == 200) { <br> alert(http_request.responseText); <br> } else { <br> alert('There was a problem with the request.'); <br> } <br> } <br> } <br> <br> document.getElementById('mybutton').onclick = function() { <br> makeRequest('test.html'); <br> } <br> <br> </script>
>由于这些功能现在只是单线,因此实际上我们可以完全摆脱它们,然后更改功能调用。因此,整个示例将成为:
是的,很容易!查看示例和完整源代码(通过我们的老朋友查看源可用)。
function makeHttpRequest(url, callback_function, return_xml) <br> { <br> var http_request, response, i; <br> <br> var activex_ids = [ <br> 'MSXML2.XMLHTTP.3.0', <br> 'MSXML2.XMLHTTP', <br> 'Microsoft.XMLHTTP' <br> ]; <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+... <br> http_request = new XMLHttpRequest(); <br> if (http_request.overrideMimeType) { <br> http_request.overrideMimeType('text/xml'); <br> } <br> } else if (window.ActiveXObject) { // IE6 and older <br> for (i = 0; i < activex_ids.length; i++) { <br> try { <br> http_request = new ActiveXObject(activex_ids[i]); <br> } catch (e) {} <br> } <br> } <br> <br> if (!http_request) { <br> alert('Unfortunately your browser doesn't support this feature.'); <br> return false; <br> } <br> <br> http_request.onreadystatechange = function() { <br> if (http_request.readyState !== 4) { <br> // not ready yet <br> return; <br> } <br> if (http_request.status !== 200) { <br> // ready, but not OK <br> alert('There was a problem with the request.(Code: ' + http_request.status + ')'); <br> return; <br> } <br> if (return_xml) { <br> response = http_request.responseXML; <br> } else { <br> response = http_request.responseText; <br> } <br> // invoke the callback <br> callback_function(response); <br> }; <br> <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> }
我们的项目:WebConsole应用程序
我们将创建的应用程序允许您在Web服务器上执行任何Shell命令,无论是基于Windows还是Linux。我们甚至会付出一些CSS的努力,以使应用程序更像是控制台窗口。 在接口方面,我们有一个可滚动的
html
这是应用程序的HTML部分:
就是这样:通过执行命令的结果以及我们可以输入命令的
以上是用ajax命令的详细内容。更多信息请关注PHP中文网其他相关文章!