hc21yb 2015-05-25 13:55 采纳率: 0%
浏览 4190

ajax编码问题,运行结果出错,实在找不原因

代码:

 <!DOCYPE html>
<html>
  <head>
    <title>Ajax Test</title>
    <script src = "myAjaxLib.js">
    </script>
    <script>
      function cback(text){
        alert(text);
      }
      window.onload = function(){
        document.getElementById("btn1").onclick = function(){
          doAjax("libtest.php", "param=hello", "cback", "GET", 0);
          }
      }
    </script>
  </head>
  <body>
    <input type="button" id="btn1" value="Make call" />
  </body>
</html>

myAjaxLib.js代码

 function getXMLHttpRequest(){

    try{
        try{
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
            return new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
    catch(e){
        return new XMLHttpRequest();
    }
}

function doAjax(url, query, callback, reqtype, getxml){
    var myreq = getXMLHttpRequest();
    myreq.onreadystatechange = function(){
        if(myreq.readyState==4){
            if(myreq.status ==200){
                var item = myreq.responseText;
                if(getxml == 1) item = myreq.responseXML;
                eval(callback + '(item)');
            }
        }
    }
    if(reqtype.toUpperCase() == "POST"){
        requestPOST(url, query,myreq);
    }
    else
    {
        requestGET(url, query, myreq);
    }
}

function requestGET(url, query, req){
    var myRandom = parseInt(Math.random()*99999999);
    if(query == ''){
        var callUrl = url + '?rand='+ myRandom;
    }else{
        var callUrl = url + '?' + query + '&rand=' + myRandom;
    }
    req.open("GET", callUrl, true);
    req.send(null);
}

function requestPOST(url, query, req){
    req.open("POST", url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send(null);
}

libtest.php代码

 <?
echo "Parameter value was: ".$_GET['param'];
?>

运行结果出错:
XMLHttpRequest cannot load file:///H:/javascript/libtest.php?param=hello&rand=91751162. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.requestGET @ myAjaxLib.js:44doAjax @ myAjaxLib.js:32document.getElementById.onclick @ 17.2.html:13
myAjaxLib.js:44 Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///H:/javascript/libtest.php?param=hello&rand=91751162'.

这到底是什么原因,求好心人解答

  • 写回答

3条回答 默认 最新

  • threenewbee 2015-05-25 14:35
    关注

    明显 file:///H:/javascript/libtest.php这个就不对。你应该把你的php部署到web服务器上,通过http://协议去访问,你怎么访问的是本地的php文件呢?这样得不到执行的。

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题