2 hc21yb hc21yb 于 2015.05.25 21:55 提问

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个回答

caozhy
caozhy   Ds   Rxr 2015.05.25 22:35

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

caozhy
caozhy 回复hc21yb: 是的。
2 年多之前 回复
hc21yb
hc21yb 那我是不是要在自己的电脑中搭建一个web服务器才可以
2 年多之前 回复
llx1943llx
llx1943llx   2015.05.26 09:37

把程序放到web服务器上运行就可以了

u014395524
u014395524 把哪个程序放到web服务器上运行呢?能说具体点吗?不是很明白。。
2 年多之前 回复
showbo
showbo   Ds   Rxr 2015.05.26 11:37

本地file浏览不要用webkit核心浏览器,要用firefox。否则你就要搭建服务器后通过http访问。不过你的是动态页,原本就应该搭建服务器来进行访问,要不php会被当做文本文件来解析返回源代码,而不是编译后的你要的结果

Csdn user default icon
上传中...
上传图片
插入图片