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 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题