作者 主題: ajax在IE8上未知的執行階段錯誤  (閱讀 5307 次)

0 會員 與 1 訪客 正在閱讀本文。

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
ajax在IE8上未知的執行階段錯誤
« 於: 2009-08-17 09:27 »
我設計一個PHP網頁具有ajax功能,在firefox及google上測試都是OK
但是在IE8上面卻不行,想問是哪一個語法出了問題呢?
謝謝!
表單網頁:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="ajaxforms.js" type="text/javascript" language="javascript"></script>
</head><body>
<form action="" method="post" name="ajaxform">
<table class=ajform>
<tr>
<td class="title">
Username (*)
</td>
<td class="field">
<input type="text" name="username" value="" size="20" OnChange="CheckField(this)" tabindex="1">
<input type="text" name="username2" value="" size="20" >
<div id="username" class="message"></div>
</td>
</tr>
</table>
</form>
</body></html>
處理訊息的ajaxforms.js內容為
var AJAXForms = false;
var LastField = null;
var isIE = false;
// on !IE we only have to initialize it once
if (window.XMLHttpRequest) {
AJAXForms = new XMLHttpRequest();
}

function CheckField(field) {

if (window.XMLHttpRequest) {
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
AJAXForms = new ActiveXObject("Microsoft.XMLHTTP");
}

AJAXForms.onreadystatechange = processChange;
AJAXForms.open("GET", "check.php?op=ajax&field=" +field.name+"&value=" + field.value);
LastField = field.name;
AJAXForms.send(null);
}

function processChange() {
if (AJAXForms.readyState == 4) {

var res = document.getElementById(LastField);
res.innerHTML = AJAXForms.responseText;
res.style.visibility = "visible";
}
}

目前IE8不能執行的是以下的js檔案內的「 res.innerHTML = AJAXForms.responseText;」
,完整的函數內容:
function processChange() {
if (AJAXForms.readyState == 4) {

var res = document.getElementById(LastField);
res.innerHTML = AJAXForms.responseText;
res.style.visibility = "visible";
}
}
出現「未知的執行階段錯誤」

接收資料的PHP檔案內容為:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
if ($_GET['op'] == 'ajax') {
$link = mysql_connect("localhost", "root", "pppp");
mysql_select_db("pcschool");
$query = "SELECT * FROM logintable where loginname = '".mysql_escape_string($_GET['value'])."'";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows == 0) {
$msg = 'available';
$class = "green";
} else {
$msg = 'Not Available';
$class = "red";
}
}
echo "<?xml version='1.0' encoding='UTF-8'?>
<span class=\"$class\">$msg</span>";

die();
?>
</body></html>


TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
回覆: ajax在IE8上未知的執行階段錯誤
« 回覆 #2 於: 2009-08-17 11:48 »
ajaxforms 很久更新了哩,要不要换一下別的啊
例如 prototypejs
--
TyroneYeh