Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax脚本没有';我不在IE工作_Php_Javascript_Ajax_Internet Explorer - Fatal编程技术网

Php ajax脚本没有';我不在IE工作

Php ajax脚本没有';我不在IE工作,php,javascript,ajax,internet-explorer,Php,Javascript,Ajax,Internet Explorer,我对IE中的这个ajax脚本有一个问题,因为它不工作,它在FF和Chrome中工作得很好,但在IE中根本不工作!有两个下拉框,根据我在第一个下拉框中选择的内容,第二个下拉框显示所选城市的值 <select class="selectDest" name="Prej" onChange="getState(this.value)"> <option></option> '.funksionet::all_direction

我对IE中的这个ajax脚本有一个问题,因为它不工作,它在FF和Chrome中工作得很好,但在IE中根本不工作!有两个下拉框,根据我在第一个下拉框中选择的内容,第二个下拉框显示所选城市的值

    <select class="selectDest" name="Prej" onChange="getState(this.value)">
        <option></option>
        '.funksionet::all_directions().'
    </select>

“.funksionet::所有方向()
这是第二个下拉框:

    <div id="statediv"><select class="selectDest" name="deri">
        <option></option>
    </select></div>

这是ajax函数:

<script language="javascript" type="text/javascript">
function getXMLHTTP() { //function to return the xml http object
        var xmlhttp=false;  
        try{
            xmlhttp=new XMLHttpRequest();
        }
        catch(e)    {       
            try{            
                xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){
                try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e1){
                    xmlhttp=false;
                }
            }
        }

        return xmlhttp;
    }

    function getState(countryId) {      

        var strURL="findState.php?country="+countryId;
        var req = getXMLHTTP();

        if (req) {

            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {                        
                        document.getElementById(\'statediv\').innerHTML=req.responseText;                       
                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }               
            }           
            req.open("GET", strURL, true);
            req.send(null);
        }       
    }
</script>

函数getXMLHTTP(){//返回xml http对象的函数
var xmlhttp=false;
试一试{
xmlhttp=新的XMLHttpRequest();
}
第(e)款{
试试{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
捕获(e){
试一试{
xmlhttp=新的ActiveXObject(“Msxml2.xmlhttp”);
}
渔获物(e1){
xmlhttp=false;
}
}
}
返回xmlhttp;
}
函数getState(countryId){
var strURL=“findState.php?country=“+countryId;
var req=getXMLHTTP();
如果(请求){
req.onreadystatechange=函数(){
如果(req.readyState==4){
//只有在“OK”的情况下
如果(请求状态==200){
document.getElementById(\'statediv\')。innerHTML=req.responseText;
}否则{
警报(“使用XMLHTTP:\n“+req.statusText时出现问题”);
}
}               
}           
请求打开(“获取”,strURL,true);
请求发送(空);
}       
}
这是findstate.php文件:

<?php 
require_once 'includes/constants.php';
$country = $_GET['country'];
$link = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD); //changet the configuration in required
if (!$link) {
    die('Could not connect: ' . mysql_error("1"));
}
mysql_select_db(DB_NAME);
$query="SELECT * FROM costs WHERE prej = '$country';";
$result=mysql_query($query) or die("2");
?>
<select class="selectDest" name="Deri">
 <option></option>
  <?php while($row = mysql_fetch_array($result)) { 
    print'<option>'.$row['deri'].'</option>';

  }
 ?>
</select>

我真的需要使这项工作,我将非常感谢如果有人要帮助我在这方面。因为我不擅长JavaScript!但是,如果没有办法跨浏览器执行此操作,那么我想知道,我不会这样做。

在IE中,事件处理程序中的“this”指针不是导致事件的元素。而是窗口对象。要以跨浏览器的方式执行此操作,我建议您通过阅读以下内容真正了解它的所有功能:

使用jQuery会有所帮助,但我仍然认为您应该理解它以避免将来出现问题:)

在IE中,事件处理程序中的“this”指针不是导致事件的元素。而是窗口对象。要以跨浏览器的方式执行此操作,我建议您通过阅读以下内容真正了解它的所有功能:

使用jQuery会有所帮助,但我仍然认为您应该理解它以避免将来出现问题:)

我知道,这是离题的,但不好


我知道,这是离题的,但并不好

Javascript基本原理在每个浏览器上都差不多,但是DOM、AJAX和其他一些部分有很多不同的实现(特别是IE喜欢不同)。很久以前,许多非常聪明的javascript程序员决定停止这种痛苦并开发javascript库。有很多javascript库可用,但在我看来最简单的是。您可以查看代码以了解Jquery如何处理AJAX请求。如果你问我,代码真的很好。Jquery有非常好的文档,使用Jquery时,您的代码看起来会更干净


我在JSFIDLE上共享了一个小片段,它只需几行就可以执行http POST请求(警报输出),可以在以下位置找到:
/echo/html/
只是一个输出html的url,正如JSFIDLE所解释的那样。

Javascript基本原理在每个浏览器上都差不多,但是DOM、AJAX和其他一些部分有很多不同的实现(特别是IE喜欢不同)。很久以前,许多非常聪明的javascript程序员决定停止这种痛苦并开发javascript库。有很多javascript库可用,但在我看来最简单的是。您可以查看代码以了解Jquery如何处理AJAX请求。如果你问我,代码真的很好。Jquery有非常好的文档,使用Jquery时,您的代码看起来会更干净


我在JSFIDLE上共享了一个小片段,它只需几行就可以执行http POST请求(警报输出),可以在以下位置找到:
/echo/html/
只是一个输出html的url,正如JSFIDLE所解释的。

我打赌使用可以解决跨浏览器问题。我打赌使用可以解决跨浏览器问题。您只需要知道如何访问元素。在IE中,它是全局事件对象(Event.srcmelement)的srcmelement。类似于(event&&event.srcement | | this)。或者,如果您不介意给元素一个ID,您可以直接使用document.getElementById('yourid').value(而不是this.value)。您只需要知道如何访问元素。在IE中,它是全局事件对象(Event.srcmelement)的srcmelement。类似于(event&&event.srcement | | this)。或者,如果您不介意给元素一个ID,您可以直接使用document.getElementById('yourid').value(而不是this.value)。
$country = $_GET['country'];
$query="SELECT * FROM costs WHERE prej = '$country';";