|
查看: 1205|回复: 14
|
用xmlHttp.open在ie上的問題
[复制链接]
|
|
|
我已經把文件,資料庫,php檔都設到utf8了,在ie以外的瀏覽器都沒問題
下面的是javascript,用來呼叫后臺的php的
var xmlHttp;
function createXMLHttpRequest()
{
if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();//FF
}
else if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP");//IE5
}
catch(e)
{}
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE6
}
catch(e)
{}
if(!xmlHttp)
{
window.alert("error");
return false;
}
}
}
function Requeststage(stage)
{
createXMLHttpRequest();
xmlHttp.open("GET","dynamicstage.php?stage="+stage,true);
xmlHttp.onreadystatechange = handlestageChange;
xmlHttp.send(null);
}
function handlestageChange()
{
if(xmlHttp.readyState==4)
{
document.getElementById("class").innerHTML = 'loading.......';
if(xmlHttp.status==200)
{
document.getElementById("class").innerHTML = xmlHttp.responseText;
Requestsubject(document.getElementById('subject').value);
}
}
}
function Requestsubject(subject)
{
var stage=document.form1.stage.value;
createXMLHttpRequest();
xmlHttp.open("GET","dynamicsubject.php?subject="+subject+"&stage="+stage,true);
xmlHttp.onreadystatechange = handlesubjectChange;
xmlHttp.send(null);
}
function handlesubjectChange()
{
if(xmlHttp.readyState==4)
{
document.getElementById("abs").innerHTML = 'loading.......';
if(xmlHttp.status==200)
{
document.getElementById("abs").innerHTML = xmlHttp.responseText;
Requestcourse(document.getElementById('semester').value);
}
}
}
function Requestcourse(semester)
{
var stage=document.form1.stage.value;
var subject=document.form1.subject.value;
createXMLHttpRequest();
xmlHttp.open("GET","dynamiccourse.php?subject="+subject+"&stage="+stage+"&semester="+semester,true);
xmlHttp.onreadystatechange = handlecourseChange;
xmlHttp.send(null);
}
function handlecourseChange()
{
if(xmlHttp.readyState==4)
{
document.getElementById("crsdisplay1").innerHTML = 'loading.......';
if(xmlHttp.status==200)
{
document.getElementById("crsdisplay1").innerHTML = xmlHttp.responseText;
document.getElementById("crsdisplay2").innerHTML = xmlHttp.responseText;
document.getElementById("crsdisplay3").innerHTML = xmlHttp.responseText;
document.getElementById("crsdisplay4").innerHTML = xmlHttp.responseText;
document.getElementById("crsdisplay5").innerHTML = xmlHttp.responseText;
}
}
}
|
這是其中一個被呼叫的php
<?php
mb_internal_encoding("UTF-8");
require_once('Connections/MyOcy.php');
$data=$_GET["stage"];
$data2=$_GET["subject"];
$sql_str="select * from p_data where subject='".$data2."'and nid like '%V$data%'";
$result = mysql_query($sql_str,$MyOcy) or die(mysql_error());
$array = mysql_fetch_array($result);
$row = mysql_num_rows($result);
$i=1;
while($i<$row){
$array= mysql_fetch_array($result);
$i++;
echo
'<div class="adline">
<div class="sid">'.$array[nid].'</div>
<div class="sname">'.$array[name_ch].'</div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div id="per2"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div id="per2"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div>
<div class="per1"><input type="checkbox" value=""></div><br class="clear"/></div>';
}
?> |
在ie里php程式里如果傳進去的是中文的話(GET_[subject]),會導致無法對資料庫進行讀取,其他browser都沒問題,subject換去英文后沒問題,所以覺得是編碼問題,
但不懂問題出在哪里。
[ 本帖最后由 y小叶y 于 28-11-2008 04:29 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 28-11-2008 04:54 PM
|
显示全部楼层
原帖由 y小叶y 于 28-11-2008 04:19 PM 发表 
我已經把文件,資料庫,php檔都設到utf8了,在ie以外的瀏覽器都沒問題
下面的是javascript,用來呼叫后臺的php的
var xmlHttp;
function createXMLHttpRequest()
{
if(window.XMLHttpRequest ...
看不到php code 哦.. |
|
|
|
|
|
|
|
|
|
|
发表于 28-11-2008 04:56 PM
|
显示全部楼层
- var stage=document.form1.stage.value;
- var params = "subject="+subject+"&stage="+stage;
- createXMLHttpRequest();
- xmlHttp.open("POST","dynamicsubject.php",true);
- xmlHttp.onreadystatechange = handlesubjectChange;
- xmlHttp.send(params);
复制代码
试试看用POST. |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 28-11-2008 05:01 PM
|
显示全部楼层
原帖由 爆米花1983 于 28-11-2008 04:54 PM 发表 
看不到php code 哦.. php不是在下面嗎? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 28-11-2008 05:05 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 28-11-2008 07:46 PM
|
显示全部楼层
不好意思, 忘了在send之前加这个
- xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
复制代码
这样parameter才会populate到$_POST
我用PHP 5, Mysql, IE/FF测试过了,应该没有问题。 |
|
|
|
|
|
|
|
|
|
|
发表于 29-11-2008 08:43 AM
|
显示全部楼层
常常遇到 IE 和 FireFox 出現不同的情況,真頭痛。  |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-11-2008 09:25 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-11-2008 09:29 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 29-11-2008 10:34 AM
|
显示全部楼层
回复 8# y小叶y 的帖子
|
hmm.. 如果把$query print出来呢?是乱码吗?我不确定IE在什么情况之下不能支持其他的编码... 但是我测试的时候是没有问题。你可以在其他的电脑试一下吗? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-11-2008 11:47 AM
|
显示全部楼层
原帖由 苦瓜汤 于 29-11-2008 10:34 AM 发表 
hmm.. 如果把$query print出来呢?是乱码吗?我不确定IE在什么情况之下不能支持其他的编码... 但是我测试的时候是没有问题。你可以在其他的电脑试一下吗? echo $_REQUEST["subject"];
ie上是print亂碼,在其他電腦試過了,不行.
還是我的php設定有問題?
好象是php接受到亂碼
xmlHttp.send(null);
改成post后還是放null?
[ 本帖最后由 y小叶y 于 29-11-2008 11:59 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 29-11-2008 12:05 PM
|
显示全部楼层
原帖由 y小叶y 于 29-11-2008 11:47 AM 发表 
echo $_REQUEST["subject"];
ie上是print亂碼,在其他電腦試過了,不行.
還是我的php設定有問題?
好象是php接受到亂碼
xmlHttp.send(null);
改成post后還是放null?
?! 改成POST后就不能再用 index.php?subject=xxxx 的url了。所有的parameter需要用 send() 船送出去
参考之前的code
- var stage=document.form1.stage.value;
- var params = "subject="+subject+"&stage="+stage;
- createXMLHttpRequest();
- xmlHttp.open("POST","dynamicsubject.php",true); //这里只保留php的url
- xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xmlHttp.onreadystatechange = handlesubjectChange;
- xmlHttp.send(params); //把parameter放到这里
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-11-2008 12:34 PM
|
显示全部楼层
原帖由 苦瓜汤 于 29-11-2008 12:05 PM 发表 
?! 改成POST后就不能再用 index.php?subject=xxxx 的url了。所有的parameter需要用 send() 船送出去
参考之前的code
var stage=document.form1.stage.value;
var params = "subject="+subject+"&stage="+ ... 現在我確定資料庫可以讀取了,也就是說傳進去php的是ok的,
但是php ouput的是???????
ie refresh多幾次偶爾會正常。
另外
var params = "?subject="+subject+"&stage="+stage;
不用放?了?
[ 本帖最后由 y小叶y 于 29-11-2008 12:40 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 29-11-2008 12:47 PM
|
显示全部楼层
回复 13# y小叶y 的帖子
试试看在<head></head>内加
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
注: "?"在POST是不需要的。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-11-2008 12:55 PM
|
显示全部楼层
原帖由 苦瓜汤 于 29-11-2008 12:47 PM 发表 
试试看在内加
注: "?"在POST是不需要的。
解決了,但是是在糊里糊涂的情況下解決的,雖然在ie以外的browser還不穩定,也不懂哪里出問題,謝謝各位的幫忙,尤其是苦瓜汤網友
[ 本帖最后由 y小叶y 于 29-11-2008 04:08 PM 编辑 ] |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|