佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1203|回复: 14

用xmlHttp.open在ie上的問題

[复制链接]
发表于 28-11-2008 04:19 PM | 显示全部楼层 |阅读模式
我已經把文件,資料庫,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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
  1. var stage=document.form1.stage.value;
  2. var params = "subject="+subject+"&stage="+stage;

  3. createXMLHttpRequest();
  4. xmlHttp.open("POST","dynamicsubject.php",true);  

  5. xmlHttp.onreadystatechange = handlesubjectChange;   

  6. 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 04:56 PM 发表
var stage=document.form1.stage.value;
var params = "subject="+subject+"&stage="+stage;

createXMLHttpRequest();
xmlHttp.open("OST","dynamicsubject.php",true);  

xmlHttp.onreadystatechange = h ...

還是不行
回复

使用道具 举报

发表于 28-11-2008 07:46 PM | 显示全部楼层
不好意思, 忘了在send之前加这个
  1. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
复制代码


这样parameter才会populate到$_POST

我用PHP 5, Mysql, IE/FF测试过了,应该没有问题。
回复

使用道具 举报

Follow Us
发表于 29-11-2008 08:43 AM | 显示全部楼层
常常遇到 IE 和 FireFox 出現不同的情況,真頭痛。
回复

使用道具 举报

 楼主| 发表于 29-11-2008 09:25 AM | 显示全部楼层
原帖由 苦瓜汤 于 28-11-2008 07:46 PM 发表
不好意思, 忘了在send之前加这个
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded";

这样parameter才会populate到$_POST

我用PHP 5, Mysql, IE/FF测试过了,应该没有问题。
還是不行,我還用過escape,encodeURI也是不行
很奇怪的只是ie有問題,照理說encoding出現問題所有瀏覽器也會有問題,但在ff,safari,opera都很正常

[ 本帖最后由 y小叶y 于 29-11-2008 09:27 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 29-11-2008 09:29 AM | 显示全部楼层
原帖由 長江七號 于 29-11-2008 08:43 AM 发表
常常遇到 IE 和 FireFox 出現不同的情況,真頭痛。
應該說ie和'其他'瀏覽器,每次出現問題都是ie,其他瀏覽器只要測試一個沒問題其他的都會沒問題,只有ie:@:@:@:@
回复

使用道具 举报

发表于 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
  1. var stage=document.form1.stage.value;

  2. var params = "subject="+subject+"&stage="+stage;



  3. createXMLHttpRequest();

  4. xmlHttp.open("POST","dynamicsubject.php",true);  //这里只保留php的url

  5. xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

  6. xmlHttp.onreadystatechange = handlesubjectChange;   



  7. 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 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-12-2025 05:21 PM , Processed in 0.104019 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表