为什么我在以下JavaScript代码上遇到XMLHTTPRequest错误?

时间:2014-04-06 15:46:12

标签: javascript html ajax native-code

我正在尝试使用以下JS代码执行原生javascript并请求html页面,为什么它会返回(在Chrome中)以下内容?

XMLHttpRequest无法加载/live-examples/temp.html。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。

我使用的代码如下:

            var sendRequest = (function(){

            // Private member variables
            var readyState = {
                UNSENT          : 0,
                OPENED          : 1,
                HEADERS_RECIVED : 2,
                LOADING         : 3,
                DONE            : 4
            }

            var status = {
                SUCCESS : 200,
                NOT_MODIFIED : 304
            }

            // Private member methods
            function getData(callBack){

                var xhr = getXhr();
                if(!xhr){
                    console.log('unable to create xhr object.')
                    return false;
                }

                // test readyState
                if(xhr.readyState !== readyState.DONE) return;

                if(xhr.status === status.SUCCESS && xhr.status !== status.NOT_MODIFIED){
                    callBack(xhr.responseText);
                }
            }


            function getXhr(){

                var XMLHttpList = [
                    function(){ return new XMLHttpRequest(); },
                    function(){ return ActiveXObject("Msxml2.XMLHTTP"); },
                    function(){ return ActiveXObject("Microsoft.XMLHTTP"); }
                ], xhr;

                for(var i = 0; i < XMLHttpList.length; i++){
                    try{
                        xhr = XMLHttpList[i];
                        break;
                    }catch(e){
                        continue;
                    }
                }
                return xhr();
            }


            return function(url, callBack, postData){
                var xhr = getXhr();
                if(!xhr) return;

                var method = (postData) ? 'POST' : 'GET';

                xhr.open(method, url, true);
                xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                xhr.onreadystatechange = getData(callBack);

                xhr.send(postData);
            };

        })();

        function dealWithResponse(response){
            // the response from the xhr request
            console.log('success response: ' + response);
        }

        // cross origin request error.
        $(function(){
            document.getElementById('MyID').onclick = function(){ sendRequest('/live-examples/temp.html', dealWithResponse, 'GET'); }
        });

BODY中的HTML代码如下:

<button id="MyID">I have a button!</button>

我检查了文件&#39; temp.html&#39;确实存在。

我在这段代码中只是试图在我将要出席的演讲中使用原生javascript显示一些简单的ajax调用。

非常感谢提前, 昆顿:)

1 个答案:

答案 0 :(得分:0)

如果要使用XMLHTTPRequest对象访问数据,则需要使用HTTP。