AJAX / DOM - 在FF中工作但不是IE吗? [英] AJAX/DOM - Works in FF but not IE?

查看:50
本文介绍了AJAX / DOM - 在FF中工作但不是IE吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿所有,


我对这一切都比较新,任何帮助都会受到赞赏。

我打算做什么是创建一些请求,

1.从数据库中搜索针对XML的学生

2.如果有多个学生,请列出所有使用DOM的学生

3.最后,返回个别学生和注册。


继承人代码(对不起,这将是一个很长的代码):

request.php

------------------------------------ ------------------

< html>

< head>

< title> AJAX请求测试< / title>

< script language =" javascript">

<! -

function createRequestObject(){

var ro;

var browser = navigator.appName;

if(browser ==" Microsoft Internet Explorer" ;){

ro = new ActiveXObject(" Microsoft.XMLHTTP");

}

else {

ro = new XMLHttpRequest();

}

返回ro;

}


http = createRequestObject();


函数searchStudents(){

updateStatus(''show'',''搜索学生......'',''工作'');


var params ="" ;;

var search_adno = document.getElementById(''search_adno'')。value; < br $>
var search_forenames =

document.getElementById(''search_forenames'')。value;

var search_surname = document.getElementById(''search_surname' ')。value;

var search_dob = document.getElementById(''search_dob'')。value;


if(search_adno!="" )params + =''student_studentreference =''+

search_adno;


if(search_forenames!=""){

if(params!="")params + =''& student_forenames =''+ search_forenames;

else params + =' student_forenames =''+ search_forenames;

}

if(search_surname!=""){

if(params!=" ")params + =''& student_surname =''+ search_surname;

else params + =''student_surname =''+ search_surname;

}

if(search_dob!=""){

if(params!="")params + =''& student_dob =''+ search_dob;

else params + =''student_dob =''+ search_dob;

}


if(params!="") {

http.open(''post'',''student.xml'');

//http.overrideMimeType(''text/xml'') ;

http.onreadystatechange = listStudents;

http.send(params);

}

else {

alert(''你必须输入搜索条件'');

}

}


function listStudents(){

if(http.readyState ==" 4"){

updateStatus('' hide'');


var response = http.responseXML.documentElement;

var div = document.getElementById(''results'');

var string ="" ;;


var results = response.getElementsByTagName(''student'')。length;


document.getElementById(''totalStudents'')。innerHTML =

response.getElementsByTagName(''student'')。length;

document.getElementById( ''results-outer'')。style.display ="" ;;


if(results == 1){

getIndividualStudent(response。 getElementsByTagName(''student'')

[0] .getAttribute(''id''));

}

else if(结果0){

string =''< ul>'';


for(i = 0;我< response.getElementsByTagName(''student'')。length; i ++){

string + =''< li>'';

string + =''< a href =" javas''+''cript :getIndividualStudent(\''''+

response.getElementsByTagName(''student'')[i] .getAttribute(''id'')

+' '\'')">'';

string + = response.getElementsByTagName(''adno'')

[i] .firstChild.nodeValue;

string + ='' - '';

string + = response.getElementsByTagName(''forenames'')

[i]。 firstChild.nodeValue;

string + ='''';

string + = response.getElementsByTagName(''surname'')

[ i] .firstChild.nodeValue;

string + =''< / a>'';

string + =''< / li>''; < br $>
}


string + =''< / ul>'';


div.innerHTML = string ;

}

}

}


函数getIndividualStudent(id){

updateStatus(''show'',''让学生......'',''正常'')

//隐藏旧Div''s

document.getElementById(''search'')。style.display =" none" ;;

document.getElementById(''results-outer'')。style.display =" none" ;;

document.getElementById(''revised'')。style.displa y ="" ;;


//获取学生和填充表格

http.open(''post'',''individual.xml'');

http.onreadystatechange = populateStudentAmendmentForm;

http.send(''student_id =''+ id);


}


函数populateStudentAmendmentForm(){

if(http.readyState == 4){

updateStatus(''show'',''Populating Form ...'',''working'')


var response = http.responseXML.documentElement;


document.getElementById(''a_id'')。value =

respo nse.getElementsByTagName(''student'')[0] .getAttribute(''id'');

document.getElementById(''a_forenames'')。value =

response.getElementsByTagName(''forenames'')[0] .firstChild.nodeValue;

document.getElementById(''a _sameame'')。value =

回复.getElementsByTagName(''surname'')[0] .firstChild.nodeValue;

document.getElementById(''a_adno'')。value =

response.getElementsByTagName( ''adno'')[0] .firstChild.nodeValue;

document.getElementById(''a_dob'')。value =

response.getElementsByTagName(''dob '')[0] .firstChild.nodeValue;


document.getElementById(''a_address'')。value =

response.getElementsByTagName(''地址'')[0] .firstChild.nodeValue;

document.getElementById(''a_postcode'')。value =

response.getElementsByTagName(''postcode'' )[0] .firstChild.nodeValue;

document.getElementById(''a_email'')。value =

response.getElementsByTagName(''email'')[0] .firstChild.nodeValue;

document.getElementById(''a_telephone'')。value =

response.getElementsByTagName(''telephone'')[0] .firstChild.nodeValue;

document .getElementById(''a_email'')。value =

response.getElementsByTagName(''email'')[0] .firstChild.nodeValue;

document.getElementById( ''a_mobile'')。value =

response.getElementsByTagName(''mobile'')[0] .firstChild.nodeValue;


http.open (''post'',''enrolments.xml'');

http.onreadystatechange = updateEnrolments;

http.send(''student_id =''+回复.getElementsByTagN ame(''student'')

[0] .getAttribute(''id''));

}

}


函数updateEnrolments(){

if(http.readyState == 4){

va r response = http.responseXML.documentElement;

var div = document.getElementById(''results'');

var string ="" ;;


var results = response.getElementsByTagName(''enrollment'')。length;


if(results == 0){

//添加''No Enrollments''的行

tbl = document.getElementById(''enrollment'');

var lastrow = tbl.rows。长度;


var row = tbl.insertRow(lastrow);

var ne_cell = row.insertCell(0);


ne_cell.colSpan = 4;

var text = document.createTextNode(''No Current Enrollments ...'');


ne_cell .appendChild(text);

}

else {

for(i = 0;我< response.getElementsByTagName(''enrollment'')。lengt h; i ++)

{

var id = response.getElementsByTagName(''enrollment'')

[i] .getAttribute(''id' ');

var code = response.getElementsByTagName(''code'')

[i] .firstChild.nodeValue;

var title = response.getElementsByTagName(''title'')

[i] .firstChild.nodeValue;

var status = response.getElementsByTagName(''status'')

[i] .firstChild.nodeValue;


addEnrolmentTableRow(id,code,title,status);

}

}


updateStatus(''hide'');

}

}


函数addEnrolmentTableRow(id,code,title,status){

tbl = document.getElementById(''enrollments'');

var lastrow = tbl.rows.length;


var iteration = lastrow - 1;


var row = tbl.insertRow(lastrow);


//添加隐藏ID

id_input = document.createElement(''in put'');

id_input.type =''hidden'';

id_input.name =''enrollment [''+ lastrow +''] [id] '';

id_input.value = id;


document.getElementById(''revised'')。appendChild(id_input);


//编号单元格

var numbered_cell = row.insertCell(0);

var textNode = document.createTextNode(iteration);

numbered_cell.appendChild(textNode);


//添加带输入框的代码单元格

var code_cell = row.insertCell(1);


var code_input = document.createElement(''input'');

code_input.type =''text'';

code_input.name =''enrollment [''+ lastrow +''] [code]'';

code_input.size = 8;

if(code! = null){

code_input.value = code;

code_input.disabled = true;

}


code_cell.appendChild(code_input);


//添加标题C带输入框的元素

var title_cell = row.insertCell(2);


var title_input = document.createElement(''input'');

title_input.type =''text'';

title_input.name =''enrollment [''+ lastrow +''] [title]'';

title_input.size = 15;

if(title!= null){

title_input.value = title;

title_input。 disabled = true;

}


title_cell.appendChild(title_input);

//添加状态选择状态单元格

var status_cell = row.insertCell(3);


var status_select = document.createElement(''select'');


status_select.name =''enrollment [''+ lastrow +''] [status]'';

status_select.options [0] =新选项(''预注册'' ',''0'');

status_select.options [1] =新选项(''当前'',''1'');

status_select。 options [2] = new Option(''已完成'',''''');

status_select.options [3] =新选项(''已撤回'',''3'');

status_select.options [4] =新选项(''已传输'',''4'');

status_select.options [5] =新选项(''从未参与''''' W'');


开关(状态){

case(status =" Current"):

status_select。 selectedIndex = 1;

break;

case" Completed":

status_select.selectedIndex = 2;

休息;

case" Withdrawn":

status_select.selectedIndex = 3;

break;

case" ;转移:

status_select.selectedIndex = 4;

休息;

案例从未参与:

status_select.selectedIndex = 5;

break;

默认值:

status_select.selectedIndex = 0;

break ;

}


status_cell.appendChild(st atus_select);


//用输入框添加日期单元格

var date_cell = row.insertCell(4);


var date_input = document.createElement(''input'');

date_input.type =''text'';

date_input.name =''注册[''+ lastrow +''] [date]'';

date_input.size = 6;


date_cell.appendChild(date_input);

}


函数updateStatus(showhide,text,image){

if(showhide ==" show")

document.getElementById(''status'')。style.display ="" ;

else if(showhide =" hide")

document.getElementById(''status'')。style.display =" n one";


status_image = document.getElementById(''status-image'');

status_text = document.getElementById(''status-text'');


if(text!= null)status_text.innerHTML = text;

if(image!= null)status_image.innerHTML =''< img src =" ;''+ image

+''。gif"边界=" 0" alt ="状态图像"高度= QUOT; 16" />'';

}

// - >

< / script>


< / head>

< body>


< div id =" status">

< span id =" status-image">< / span>

< span id =" status-text">< / span>

< / div>


< h1>学生修正表格< / h1>


< div id =" ;搜索">

< h2>搜索学生< / h2>

< table border =" 0" CELLSPACING = QUOT; 0" cellpadding =" 0">

< tr>

< caption>搜索学生< / caption>

< / tr>

< tr>

< td class =" field">广告编号:< / td>

< ; td>< input type =" text"名称= QUOT; search_adno" id =" search_adno"

size =" 6" />< / td>

< / tr>

< tr>

< td class =" field" >姓:< / td>

< td>< input type =" text" name =" search_surname"

id =" search_surname" />< / td>

< / tr>

< tr>

< td class =" field" > Forenames:< / td>

< td>< input type =" text" name =" search_forenames"

id =" search_forenames" />< / td>

< / tr>

< tr>

< td class =" field" >出生日期:< / td>

< td>< input type =" text"名称= QUOT; search_dob" ID = QUOT; search_dob" />< / td>

< / tr>

< tr>

< td colspan =" 2" >< input type =" button" value =" Get Results"

onClick =" javascript :searchStudents();" />< / td>

< / tr>

< / table>

< / div>


< div id =" results-outer" style =" display:none">

< h2>结果< / h2>

< b>学生总数:< / b< span id = " totalStudents"& nbsp;< / span>

< div id =" results">& nbsp;< / div>

< / div>


< form action =" post.php"方法= QUOT;交" ID = QUOT;修正" style =" display:

none">

< input type =" hidden"名称= QUOT; ID" ID = QUOT; A_ID" />

< h2>修正案< / h2>


< table border =" 0" CELLSPACING = QUOT; 2英寸cellpadding =" 1">

< tr>

< caption>个人详细信息< / caption>

< / tr> ;

< tr>

< td class =" field">广告编号:< / td>

< td>< input type =" text"名称= QUOT; adno" ID = QUOT; a_adno"已禁用/>< / td>

< / tr>

< tr>

< td class =" field" ;>姓:< / td>

< td>< input type =" text"名称= QUOT;姓" ID = QUOT; a_surname" />< / td>

< / tr>

< tr>

< td class =" field" > Forenames:< / td>

< td>< input type =" text"名称= QUOT; forenames" ID = QUOT; a_forenames" />< / td>

< / tr>

< tr>

< td class =" field" >出生日期:< / td>

< td>< input type =" text"名称= QUOT; DOB" ID = QUOT; a_dob" />< / td>

< / tr>

< / table>


< table border = QUOT; 0" CELLSPACING = QUOT; 2英寸cellpadding =" 1">

< tr>

< caption>联系方式< / caption>

< / tr> ;

< tr>

< td class =" field">地址:< / td>

< td> ;< textarea name =" address" id =" a_address">< / textarea>< / td>

< / tr>

< tr>

< td class =" field">邮政编码:< / td>

< td>< input type =" text"名称= QUOT;邮编" ID = QUOT; a_postcode" />< / td>

< / tr>

< tr>

< td class =" field" >电子邮件:< / td>

< td>< input type =" text"名称= QUOT;电子邮件" ID = QUOT; a_email" />< / td>

< / tr>

< tr>

< td class =" field" >电话:< / td>

< td>< input type =" text"名称= QUOT;电话" ID = QUOT; a_telephone" />< / td>

< / tr>

< tr>

< td class =" field" >移动:< / td>

< td>< input type =" text"名称= QUOT;移动" ID = QUOT; a_mobile" />< / td>

< / tr>

< / table>

< table border =" 0" ; CELLSPACING = QUOT; 0" CELLPADDING = QUOT; 0" id =" enrollments">

< tr>

< caption>注册< / caption>

< / tr>

< tr>

< th>& nbsp;< / th>

< th> Code< / td>

< th>课程标题< / td>

< th>状态< / td>

< th>日期< / td>

< / tr>

< / table>

< div align =" right">< a href =" javascript :addEnrolmentTableRow();">添加

新注册< / a>< / div>


< input type =" submit"命名= [提交"值= [更新" />


< / form>


< / body>

< / html>


XML格式:


Student.xml

< students>

< student id =" 93000001061744">

< adno> xxx< / adno>

< forenames> xxx< / forenames>

< surname> xxx< / surname>

< title> Mr< / title>

< gender>男< /性别>

< / student>

< student id =" 93000001061745">

< adno> xxx< / adno>

< forenames> New< / forenames>

< surname> Person< / surname>

< title> Mr< / title>

< gender>男< /性别>

< / student>

< / students>


Enrolment.xml:

< enrollments>

< enrollment id =" 11938913" student =" 93000001061744">

< code> xxx< / code>

< title> xxx< / title>

< start> 03-OCT-00< / start>

< end> 15-JUN-00< / end>

< status>已完成< / status> ;

< / enrollment>

< enrollment id =" 12128794" student =" 93000001061744">

< code> xxx< / code>

< title> HND计算全职< / title>

< start> 03-OCT-00< / start>

< end> 15-JUN-00< / end>

< status>当前< ; / status>

< / enrollment>

< enrollment id =" 12754637" student =" 93000001061744">

< code> xxx< / code>

< title> xxx< / title>

< start> 03-OCT-00< / start>

< end> 15-JUN-00< / end>

< status>当前< / status> ;

< / enrollment>

< / enrollments>


这一切在Firefox中运行良好,但当它到来时到IE它返回一个

''null''为null或者不是对象错误:

var results = response.getElementsByTagName(''student'') 。长度;


有什么明显的东西我很想知道或者我使用了不好的b $ b b做法吗?我发现很难在responseXML上找到任何东西

在任何地方!


提前致谢

Hey All,

I''m relatively new to all this and any help would be appreciated.
What I''m aiming to do is create a few requests, to
1. Search for a Student against XML created from the database
2. If more than one student, list all students using DOM
3. Finally, return individual student and enrolments.

Heres the code (sorry it''s going to be a long one):
request.php
------------------------------------------------------
<html>
<head>
<title>AJAX Request Test</title>
<script language="javascript">
<!--
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
ro = new XMLHttpRequest();
}
return ro;
}

http = createRequestObject();

function searchStudents() {
updateStatus(''show'', ''Searching for students...'', ''working'');

var params = "";
var search_adno = document.getElementById(''search_adno'').value;
var search_forenames =
document.getElementById(''search_forenames'').value;
var search_surname = document.getElementById(''search_surname'').value;
var search_dob = document.getElementById(''search_dob'').value;

if (search_adno != "") params += ''student_studentreference=''+
search_adno;

if (search_forenames != "") {
if (params != "") params += ''&student_forenames=''+ search_forenames;
else params += ''student_forenames=''+ search_forenames;
}
if (search_surname != "") {
if (params != "") params += ''&student_surname=''+ search_surname;
else params += ''student_surname=''+ search_surname;
}
if (search_dob != "") {
if (params != "") params += ''&student_dob=''+ search_dob;
else params += ''student_dob=''+ search_dob;
}

if (params != "") {
http.open(''post'', ''student.xml'');
//http.overrideMimeType(''text/xml'');
http.onreadystatechange = listStudents;
http.send(params);
}
else {
alert(''You must enter search criteria'');
}
}

function listStudents() {
if(http.readyState == "4"){
updateStatus(''hide'');

var response = http.responseXML.documentElement;
var div = document.getElementById(''results'');
var string = "";

var results = response.getElementsByTagName(''student'').length;

document.getElementById(''totalStudents'').innerHTML =
response.getElementsByTagName(''student'').length;
document.getElementById(''results-outer'').style.display = "";

if (results == 1) {
getIndividualStudent(response.getElementsByTagName (''student'')
[0].getAttribute(''id''));
}
else if (results 0) {
string = ''<ul>'';

for (i=0; i<response.getElementsByTagName(''student'').length ; i++) {
string += ''<li>'';
string += ''<a href="javas''+''cript:getIndividualStudent(\''''+
response.getElementsByTagName(''student'')[i].getAttribute(''id'')
+''\'')">'';
string += response.getElementsByTagName(''adno'')
[i].firstChild.nodeValue;
string += '' - '';
string += response.getElementsByTagName(''forenames'')
[i].firstChild.nodeValue;
string += '' '';
string += response.getElementsByTagName(''surname'')
[i].firstChild.nodeValue;
string += ''</a>'';
string += ''</li>'';
}

string += ''</ul>'';

div.innerHTML = string;
}
}
}

function getIndividualStudent(id) {
updateStatus(''show'', ''Getting Student...'', ''working'')
// Hide old Div''s
document.getElementById(''search'').style.display = "none";
document.getElementById(''results-outer'').style.display = "none";
document.getElementById(''amendments'').style.displa y = "";

// Get Student and Populate Form
http.open(''post'', ''individual.xml'');
http.onreadystatechange = populateStudentAmendmentForm;
http.send(''student_id=''+id);

}

function populateStudentAmendmentForm() {
if(http.readyState == 4){
updateStatus(''show'', ''Populating Form...'', ''working'')

var response = http.responseXML.documentElement;

document.getElementById(''a_id'').value =
response.getElementsByTagName(''student'')[0].getAttribute(''id'');
document.getElementById(''a_forenames'').value =
response.getElementsByTagName(''forenames'')[0].firstChild.nodeValue;
document.getElementById(''a_surname'').value =
response.getElementsByTagName(''surname'')[0].firstChild.nodeValue;
document.getElementById(''a_adno'').value =
response.getElementsByTagName(''adno'')[0].firstChild.nodeValue;
document.getElementById(''a_dob'').value =
response.getElementsByTagName(''dob'')[0].firstChild.nodeValue;

document.getElementById(''a_address'').value =
response.getElementsByTagName(''address'')[0].firstChild.nodeValue;
document.getElementById(''a_postcode'').value =
response.getElementsByTagName(''postcode'')[0].firstChild.nodeValue;
document.getElementById(''a_email'').value =
response.getElementsByTagName(''email'')[0].firstChild.nodeValue;
document.getElementById(''a_telephone'').value =
response.getElementsByTagName(''telephone'')[0].firstChild.nodeValue;
document.getElementById(''a_email'').value =
response.getElementsByTagName(''email'')[0].firstChild.nodeValue;
document.getElementById(''a_mobile'').value =
response.getElementsByTagName(''mobile'')[0].firstChild.nodeValue;

http.open(''post'', ''enrolments.xml'');
http.onreadystatechange = updateEnrolments;
http.send(''student_id=''+response.getElementsByTagN ame(''student'')
[0].getAttribute(''id''));
}
}

function updateEnrolments() {
if(http.readyState == 4){
var response = http.responseXML.documentElement;
var div = document.getElementById(''results'');
var string = "";

var results = response.getElementsByTagName(''enrolment'').length;

if (results == 0) {
// Add Row with ''No Enrolments''
tbl = document.getElementById(''enrolment'');
var lastrow = tbl.rows.length;

var row = tbl.insertRow(lastrow);
var ne_cell = row.insertCell(0);

ne_cell.colSpan = 4;
var text = document.createTextNode(''No Current Enrolments...'');

ne_cell.appendChild(text);
}
else {
for (i=0; i<response.getElementsByTagName(''enrolment'').lengt h; i++)
{
var id = response.getElementsByTagName(''enrolment'')
[i].getAttribute(''id'');
var code = response.getElementsByTagName(''code'')
[i].firstChild.nodeValue;
var title = response.getElementsByTagName(''title'')
[i].firstChild.nodeValue;
var status = response.getElementsByTagName(''status'')
[i].firstChild.nodeValue;

addEnrolmentTableRow(id, code, title, status);
}
}

updateStatus(''hide'');
}
}

function addEnrolmentTableRow(id, code, title, status) {
tbl = document.getElementById(''enrolments'');
var lastrow = tbl.rows.length;

var iteration = lastrow - 1;

var row = tbl.insertRow(lastrow);

// Add Hidden ID
id_input = document.createElement(''input'');
id_input.type = ''hidden'';
id_input.name = ''enrolment['' + lastrow + ''][id]'';
id_input.value = id;

document.getElementById(''amendments'').appendChild( id_input);

// Numbered Cell
var numbered_cell = row.insertCell(0);
var textNode = document.createTextNode(iteration);
numbered_cell.appendChild(textNode);

// Add Code Cell with Input Box
var code_cell = row.insertCell(1);

var code_input = document.createElement(''input'');
code_input.type = ''text'';
code_input.name = ''enrolment['' + lastrow + ''][code]'';
code_input.size = 8;
if (code != null) {
code_input.value = code;
code_input.disabled = true;
}

code_cell.appendChild(code_input);

// Add Title Cell with Input Box
var title_cell = row.insertCell(2);

var title_input = document.createElement(''input'');
title_input.type = ''text'';
title_input.name = ''enrolment['' + lastrow + ''][title]'';
title_input.size = 15;
if (title != null) {
title_input.value = title;
title_input.disabled = true;
}

title_cell.appendChild(title_input);
// Add Status Cell with Status Select
var status_cell = row.insertCell(3);

var status_select = document.createElement(''select'');

status_select.name = ''enrolment['' + lastrow + ''][status]'';
status_select.options[0] = new Option(''Pre-Enrolled'', ''0'');
status_select.options[1] = new Option(''Current'', ''1'');
status_select.options[2] = new Option(''Completed'', ''2'');
status_select.options[3] = new Option(''Withdrawn'', ''3'');
status_select.options[4] = new Option(''Transferred'', ''4'');
status_select.options[5] = new Option(''Never Attended'', ''W'');

switch (status) {
case (status = "Current"):
status_select.selectedIndex = 1;
break;
case "Completed":
status_select.selectedIndex = 2;
break;
case "Withdrawn":
status_select.selectedIndex = 3;
break;
case "Transferred":
status_select.selectedIndex = 4;
break;
case "Never Attended":
status_select.selectedIndex = 5;
break;
default:
status_select.selectedIndex = 0;
break;
}

status_cell.appendChild(status_select);

// Add Date Cell with Input Box
var date_cell = row.insertCell(4);

var date_input = document.createElement(''input'');
date_input.type = ''text'';
date_input.name = ''enrolment['' + lastrow + ''][date]'';
date_input.size = 6;

date_cell.appendChild(date_input);
}

function updateStatus(showhide, text, image) {
if (showhide == "show")
document.getElementById(''status'').style.display="" ;
else if (showhide = "hide")
document.getElementById(''status'').style.display="n one";

status_image = document.getElementById(''status-image'');
status_text = document.getElementById(''status-text'');

if (text != null) status_text.innerHTML = text;
if (image != null) status_image.innerHTML = ''<img src="''+ image
+''.gif" border="0" alt="Status Image" height="16" />'';
}
//-->
</script>

</head>
<body>

<div id="status">
<span id="status-image"></span>
<span id="status-text"></span>
</div>

<h1>Student Amendment Form</h1>

<div id="search">
<h2>Search For Student</h2>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<caption>Search for Student</caption>
</tr>
<tr>
<td class="field">Ad No:</td>
<td><input type="text" name="search_adno" id="search_adno"
size="6" /></td>
</tr>
<tr>
<td class="field">Surname:</td>
<td><input type="text" name="search_surname"
id="search_surname" /></td>
</tr>
<tr>
<td class="field">Forenames:</td>
<td><input type="text" name="search_forenames"
id="search_forenames" /></td>
</tr>
<tr>
<td class="field">Date of Birth:</td>
<td><input type="text" name="search_dob" id="search_dob" /></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="Get Results"
onClick="javascript:searchStudents();" /></td>
</tr>
</table>
</div>

<div id="results-outer" style="display: none">
<h2>Results</h2>
<b>Total Students:</b<span id="totalStudents">&nbsp;</span>
<div id="results">&nbsp;</div>
</div>

<form action="post.php" method="post" id="amendments" style="display:
none">
<input type="hidden" name="id" id="a_id" />
<h2>Amendments</h2>

<table border="0" cellspacing="2" cellpadding="1">
<tr>
<caption>Personal Details</caption>
</tr>
<tr>
<td class="field">Ad No:</td>
<td><input type="text" name="adno" id="a_adno" disabled /></td>
</tr>
<tr>
<td class="field">Surname:</td>
<td><input type="text" name="surname" id="a_surname" /></td>
</tr>
<tr>
<td class="field">Forenames:</td>
<td><input type="text" name="forenames" id="a_forenames" /></td>
</tr>
<tr>
<td class="field">Date of Birth:</td>
<td><input type="text" name="dob" id="a_dob" /></td>
</tr>
</table>

<table border="0" cellspacing="2" cellpadding="1">
<tr>
<caption>Contact Details</caption>
</tr>
<tr>
<td class="field">Address:</td>
<td><textarea name="address" id="a_address"></textarea></td>
</tr>
<tr>
<td class="field">Post Code:</td>
<td><input type="text" name="postcode" id="a_postcode" /></td>
</tr>
<tr>
<td class="field">E-Mail:</td>
<td><input type="text" name="email" id="a_email" /></td>
</tr>
<tr>
<td class="field">Telephone:</td>
<td><input type="text" name="telephone" id="a_telephone" /></td>
</tr>
<tr>
<td class="field">Mobile:</td>
<td><input type="text" name="mobile" id="a_mobile" /></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" id="enrolments">
<tr>
<caption>Enrolments</caption>
</tr>
<tr>
<th>&nbsp;</th>
<th>Code</td>
<th>Course Title</td>
<th>Status</td>
<th>Date</td>
</tr>
</table>
<div align="right"><a href="javascript:addEnrolmentTableRow();">Add
New Enrolment</a></div>

<input type="submit" name="Submit" value="Update" />

</form>

</body>
</html>

XML Formats:

Student.xml
<students>
<student id="93000001061744">
<adno>xxx</adno>
<forenames>xxx</forenames>
<surname>xxx</surname>
<title>Mr</title>
<gender>Male</gender>
</student>
<student id="93000001061745">
<adno>xxx</adno>
<forenames>New</forenames>
<surname>Person</surname>
<title>Mr</title>
<gender>Male</gender>
</student>
</students>

Enrolment.xml:
<enrolments>
<enrolment id="11938913" student="93000001061744">
<code>xxx</code>
<title>xxx</title>
<start>03-OCT-00</start>
<end>15-JUN-00</end>
<status>Completed</status>
</enrolment>
<enrolment id="12128794" student="93000001061744">
<code>xxx</code>
<title>HND Computing Full Time</title>
<start>03-OCT-00</start>
<end>15-JUN-00</end>
<status>Current</status>
</enrolment>
<enrolment id="12754637" student="93000001061744">
<code>xxx</code>
<title>xxx</title>
<start>03-OCT-00</start>
<end>15-JUN-00</end>
<status>Current</status>
</enrolment>
</enrolments>

This all works fine in Firefox, but when it comes to IE it returns a
''null'' is null or not an object error on the line:
var results = response.getElementsByTagName(''student'').length;

Is there anything glarinly obvious that I''m missing or am I using bad
practices? I''m finding it really hard to find anything on responseXML
anywhere!

Thanks in advance

推荐答案

ad**@areasix.co.uk 写道:

嘿所有,


我对这一切都比较新,任何帮助都会受到赞赏。

我打算做的是创建一些请求,

1.从数据库中搜索针对XML的学生

2.如果不止一个学生,列出所有使用DOM的学生

3.最后,返回个别学生和注册。
Hey All,

I''m relatively new to all this and any help would be appreciated.
What I''m aiming to do is create a few requests, to
1. Search for a Student against XML created from the database
2. If more than one student, list all students using DOM
3. Finally, return individual student and enrolments.



< snippage>

<snippage>


>

这一切在Firefox中运行良好,但是当涉及到IE时它返回一个

''null''为空或不是行上的对象错误:

var results = response.getElementsByTagName(''student'')。length;


有什么明显的东西我很想知道或者我使用了不好的
做法吗?我发现很难在responseXML上找到任何东西

在任何地方!
>
This all works fine in Firefox, but when it comes to IE it returns a
''null'' is null or not an object error on the line:
var results = response.getElementsByTagName(''student'').length;

Is there anything glarinly obvious that I''m missing or am I using bad
practices? I''m finding it really hard to find anything on responseXML
anywhere!



确保你的Content-Type HTTP响应头是正确的

(text / xml),FF并不太在意,即使没有设置这个

也会接受XML。如果Content-Type不正确,IE会将XML视为文本。


另外请记住,你不能将响应XML中的元素添加到
$中b $ b IE中的页面DOM。


-

Ian Collins。

Make sure your Content-Type HTTP response headers are correct
(text/xml), FF doesn''t care too much and will accept XML even if this
isn''t set. IE will treat XML as text if Content-Type isn''t correct.

Also bear in mind that you can''t add elements form the response XML into
the page DOM in IE.

--
Ian Collins.


On 4月2日,12:05,Ian Collins< ian-n ... @ hotmail.comwrote:
On 2 Apr, 12:05, Ian Collins <ian-n...@hotmail.comwrote:

a ... @ areasix.co.uk写道:
a...@areasix.co.uk wrote:

Hey All,
Hey All,


我对这一切都很新帮助将不胜感激。

我打算做的是创建一些请求,

1.从数据库中搜索针对XML的学生

2.如果有多个学生,请列出所有使用DOM的学生

3.最后,返回个别学生和注册。
I''m relatively new to all this and any help would be appreciated.
What I''m aiming to do is create a few requests, to
1. Search for a Student against XML created from the database
2. If more than one student, list all students using DOM
3. Finally, return individual student and enrolments.



< snippage>


<snippage>


这一切在Firefox中运行良好,但是当涉及到它时返回一个

''null''为null或不是行上的对象错误:

var results = response.getElementsByTagName(''student'')。length;
This all works fine in Firefox, but when it comes to IE it returns a
''null'' is null or not an object error on the line:
var results = response.getElementsByTagName(''student'').length;


有什么明显的东西我很想知道或者我使用了不好的
做法吗?我发现很难在responseXML上找到任何东西


Is there anything glarinly obvious that I''m missing or am I using bad
practices? I''m finding it really hard to find anything on responseXML
anywhere!



确保您的Content-Type HTTP响应标头正确

(text / xml),FF并不在乎太多即使没有设置这个

,也会接受XML。如果Content-Type不正确,IE会将XML视为文本。


另外请记住,你不能将响应XML中的元素添加到
$中b $ b IE中的页面DOM。


-

Ian Collins。


Make sure your Content-Type HTTP response headers are correct
(text/xml), FF doesn''t care too much and will accept XML even if this
isn''t set. IE will treat XML as text if Content-Type isn''t correct.

Also bear in mind that you can''t add elements form the response XML into
the page DOM in IE.

--
Ian Collins.



有趣的是我已经将overrideMimeType(''text / xml'')注释掉了

因为IE没有喜欢我刚开始的时候。我无法访问

XML文件来设置内容类型标题,这可能是一个问题。

这是问题源于何处?

Funnily enough I''ve got the overrideMimeType(''text/xml'') commented out
because IE didn''t like it when I first started. I can''t get to the
XML file to set the content-type header so that could be a problem.
Would this be where the problem stems from?


ad**@areasix.co.uk

function createRequestObject(){

var ro;

var browser = navigator.appName;

if(browser ==" Microsoft Internet Explorer"){

ro = new ActiveXObject(" Microsoft.XMLHTTP");

}

else {

ro = new XMLHttpRequest();

}

返回ro;

}
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
ro = new XMLHttpRequest();
}
return ro;
}



这个函数真的不是最好的方法。不要检查

它是什么浏览器,但要检查浏览器是否支持你试图创建的对象

。有可能MSIE甚至没有在这里使用

对象。


尝试这样的事情(来自 http://ajaxcookbook.org/xmlhttprequest/):


函数createXMLHttpRequest(){

if(typeof XMLHttpRequest!=" undefined"){

返回新的XMLHttpRequest();

} else if(typeof ActiveXObject!=" undefined"){

返回新的ActiveXObject(" Microsoft.XMLHTTP");

} else {

抛出新错误(XMLHttpRequest不支持);

}

}


这不是依赖于浏览器嗅探,这就是你的代码出现

要做的事情。


-

Dylan Parry http://electricfreedom.org | http://webpageworkshop.co.uk


上述观点不一定代表我的猫的b / b
。表达的所有观点完全属于您自己的观点。

This function really isn''t the best way of doing it. Don''t check to see
what browser it is, but check to see if the browser supports the objects
you are trying to create. It''s possible that MSIE isn''t even getting a
object to work with here.

Try something like this (from http://ajaxcookbook.org/xmlhttprequest/):

function createXMLHttpRequest() {
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined") {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
throw new Error("XMLHttpRequest not supported");
}
}

This doesn''t rely on browser sniffing, which is what your code appears
to be doing.

--
Dylan Parry
http://electricfreedom.org | http://webpageworkshop.co.uk

The opinions stated above are not necessarily representative of
those of my cats. All opinions expressed are entirely your own.


这篇关于AJAX / DOM - 在FF中工作但不是IE吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆