Javascript语法错误

时间:2010-09-17 13:49:35

标签: javascript xmlhttprequest

任何人都可以弄清楚为什么会抛出语法错误?所有代码对我来说都是正确的。

<script type="text/javascript">

var rootdomain="http://"+window.location.hostname;

function ajaxinclude(url) 
{
    var pagerequest = false;
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
        pagerequest = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
        try {
            pagerequest = new ActiveXObject("Msxml2.XMLHTTP")
        } 
        catch (e){
            try{
                pagerequest = new ActiveXObject("Microsoft.XMLHTTP")
            }
        catch (e){}
        }
    }
    else
        return false

    pagerequest.open('GET', url, false) //get page synchronously 
    pagerequest.send(null)
    writecontent(pagerequest)
}

function writecontent(page_request){
    if (window.location.href.indexOf("http")==-1 || pagerequest.status==200)
    document.getElementById("page1").innerHTML = pagerequest.responseText;
}

它在第7行抛出错误 - var pagerequest = false;

如果你注释掉它,它只会在下一行引发错误。有什么想法吗?

提前感谢您的帮助!!

5 个答案:

答案 0 :(得分:2)

Yopur writecontent是wronge(参数命名)尝试:

function writecontent(page_request){
    if (window.location.href.indexOf("http")==-1 || page_request.status==200)
    document.getElementById("page1").innerHTML = page_request.responseText;
}

此外,这没有实际价值:

var pagerequest = false;

因为如果不在代码中的其他地方设置它,就永远不会返回它,也许只是:

var pagerequest;

答案 1 :(得分:2)

writecontent函数中,您调用参数page_request,但在函数体中将其称为pagerequest(不带下划线)。

否则,您的代码应该正常工作 - 请参阅http://jsfiddle.net/2eynH/以获取示例。

答案 2 :(得分:1)

首先要做的事 - 利用http://jslint.com/

它不喜欢您的writecontent功能。

pagerequest = new XMLHttpRequest()缺少分号。

另外,我也喜欢通过YUI Compressor“翻录”我的javascript来帮助揭示语法错误。

http://developer.yahoo.com/yui/compressor/

更多缺少分号:

pagerequest = new ActiveXObject("Msxml2.XMLHTTP")
pagerequest = new ActiveXObject("Microsoft.XMLHTTP")

还有一件事。即使javascript允许你做某事,但并不意味着你应该这样做。将pagerequest声明为布尔值,然后将其设置为ActiveXObject有点令人困惑。我可能会把它初始化为null。然后在代码中稍后“测试”为null。

答案 3 :(得分:0)

几乎所有线路上都缺少分号。

清理代码:

function ajaxinclude(url) {
    var pagerequest;

    if (window.XMLHttpRequest) { // if Mozilla, Safari etc
        pagerequest = new XMLHttpRequest();
    } else if (window.ActiveXObject){ // if IE
        try {
            pagerequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                pagerequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (ec) {}
        }
    }
    else {
        return false;
    }

    pagerequest.open('GET', url, false); // get page synchronously 
    pagerequest.send();
    writecontent(pagerequest);
}

function writecontent (page_request) {
    if (window.location.href.indexOf("http") == -1 || page_request.status == 200) {
        document.getElementById("page1").innerHTML = page_request.responseText;
    }
}

答案 4 :(得分:-1)

您的代码无效。当没有它时,半冒号会添加到您的代码中,或者它认为应该拥有它。

所以在

function ajaxinclude(url) 
{
    var pagerequest = false;
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
        pagerequest = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
        try {

javascript编译器将执行以下操作

function ajaxinclude(url); // note the semi-color meaning the { starts floating in the middle of nowhere
{
    var pagerequest = false;
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
        pagerequest = new XMLHttpRequest();
    else if (window.ActiveXObject){ // if IE
        try { //and so on

正如大多数人建议在其上运行JSLint以查看错误。

根据评论进行修改

您可以在blog

中查看分号插入详细信息