www.baike369.com
百科369 > Ajax教程 > XMLHttpRequest(XHR)对象的同步请求(open()方法)

XMLHttpRequest(XHR)对象的同步请求(open()方法)


XMLHttpRequest(XHR)对象的同步请求(open()方法)

同步请求是将open()方法中的参数设置为false:

xhr.open("GET", "http://www.baike369.com/baike369.php", false);

实例

本例可以完成一个同步请求。

1. test.html文件的源代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>XMLHttpRequest(XHR)对象的同步请求(open()方法)-www.baike369.com</title>
<script type="text/javascript">
function createXHR()
{
  try { return new XMLHttpRequest(); } catch(e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  return null;
}
function sendRequest()
{
  var responseOutput = document.getElementById("responseOutput");
  responseOutput.style.display = "";
  var xhr = createXHR();
  if (xhr)
  {
    xhr.open("GET", "http://www.baike369.com/baike369.php", false);
    xhr.send(null);
    responseOutput.innerHTML = "<h3>请求内容:</h3>" + xhr.responseText;
  }
}
window.onload = function () 
{ 
  document.requestForm.requestButton.onclick = function () { sendRequest(); };
};
</script> 
</head>
<body>
<form action="#" name="requestForm">
  <input type="button" name="requestButton" value="发送同步请求" />
</form>
<br />
<div id="responseOutput" style="display:none;">&nbsp;</div>
</body>
</html>

2. baike369.php的源代码如下:

<?php
header("Cache-Control:no-cache");
header("Pragma:no-cache");
$ip=GetHostByName($_SERVER['REMOTE_ADDR']);
echo "$ip ".date("h:i:s A");
?>

3. 显示效果如下:

XMLHttpRequest(XHR)对象的同步请求(open()方法)

这个例子并不算是真正的Ajax程序,因为这里使用的是同步通信并且没有用到XML。如果想要精确地命名它,应该称为Sjat(Synchronous JavaScript and Text),即同步JavaScript和文本。

浏览器直到返回通信之前,都会阻止下面的代码:

xhr.send(null);

这个例子将会阻塞服务器5秒钟,这将给出充分的时间让我们注意到,浏览器不会让我们做任何的操作。

Copyright© 2011-2016 www.baike369.com All Rights Reserved