Javascript语法错误

Javascript语法错误,javascript,xmlhttprequest,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 pagere

有人知道为什么会抛出语法错误吗?所有代码在我看来都是正确的

<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;
}

var rootdomain=“http://”+window.location.hostname;
函数ajaxinclude(url)
{
var pagerequest=false;
if(window.XMLHttpRequest)//if Mozilla、Safari等
pagerequest=新的XMLHttpRequest()
else if(window.ActiveXObject){//if IE
试一试{
pagerequest=新的ActiveXObject(“Msxml2.XMLHTTP”)
} 
捕获(e){
试一试{
pagerequest=新的ActiveXObject(“Microsoft.XMLHTTP”)
}
捕获(e){}
}
}
其他的
返回错误
pagerequest.open('GET',url,false)//同步获取页面
pagerequest.send(空)
writecontent(页面请求)
}
函数writecontent(第页请求){
if(window.location.href.indexOf(“http”)=-1 | | pagerequest.status==200)
document.getElementById(“page1”).innerHTML=pagerequest.responseText;
}

它在第7行抛出一个错误——var pagerequest=false

如果你把它注释掉,它只会在下一行抛出一个错误。有什么想法吗


提前感谢您的帮助

第一件事优先-利用

它不喜欢您的
writecontent
函数

并且
pagerequest=new XMLHttpRequest()
缺少分号

此外,我还喜欢通过YUI压缩器“撕裂”我的javascript,以帮助揭示语法错误

还有一些缺少的分号:

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

还有一件事。尽管javascript允许您做一些事情,但并不意味着您应该这样做。将pagerequest声明为布尔值,然后将其设置为ActiveXObject有点混乱。我可能会将其初始化为null。然后在代码的后面“测试”null。

第一件事优先-利用

它不喜欢您的
writecontent
函数

并且
pagerequest=new XMLHttpRequest()
缺少分号

此外,我还喜欢通过YUI压缩器“撕裂”我的javascript,以帮助揭示语法错误

还有一些缺少的分号:

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

还有一件事。尽管javascript允许您做一些事情,但并不意味着您应该这样做。将pagerequest声明为布尔值,然后将其设置为ActiveXObject有点混乱。我可能会将其初始化为null。然后在代码中的下面“测试”null。

Yopur writecontent错误(参数命名)请尝试:

此外,这也没有真正的价值:

var pagerequest = false;
如果不在代码中的其他地方设置它,就不会返回它,那么最好是:

var pagerequest;

Yopur writecontent错误(参数命名)请尝试:

此外,这也没有真正的价值:

var pagerequest = false;
如果不在代码中的其他地方设置它,就不会返回它,那么最好是:

var pagerequest;

几乎所有行都缺少分号

清理代码:

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;
    }
}

几乎所有行都缺少分号

清理代码:

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;
    }
}

writecontent
函数中,调用参数
page\u request
,然后在函数体中将其称为
pagerequest
(不带下划线)


否则,您的代码应该正常工作——请参见示例。

writecontent
函数中,您调用参数
page\u request
,然后在函数体中将其称为
pagerequest
(不带下划线)


否则,您的代码应该正常工作——请参阅示例。

您的代码无效。分号在代码中没有分号或它认为应该有分号时被添加到代码中

所以在

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查看错误

根据评论编辑


您可以在中看到分号插入的详细信息。您的代码无效。分号在代码中没有分号或它认为应该有分号时被添加到代码中

所以在

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查看错误

根据评论编辑


您可以在

中看到分号插入的详细信息。分号在Javascript中(通常)是可选的,它会自动执行。分号在Javascript中(通常)是可选的,它会自动执行。它真的这样做吗?你是说左大括号必须与
函数
关键字在同一行吗?如果是这样的话,我一直在做错事。@segfault是的,它确实做了,但是如果你正常地缩小你的代码,你就可以摆脱它。我已经添加了一个链接到我的答案显示它没有!函数语句总是有一个主体。在正文前插入分号会导致语法错误。这与return语句不同。该语言规定不能在
return
关键字和返回值表达式之间换行。因此,在换行符之前插入分号可以消除语法错误。它真的做到了吗?你是说左大括号必须与
函数
关键字在同一行吗?如果是这样的话,我一直在做错事。@segfault是的,它确实做了,但是如果你正常地缩小你的代码,你就可以摆脱它。我已经添加了一个链接到我的答案显示它没有!函数语句总是有一个主体。在正文前插入分号会导致语法错误。这与return语句不同。该语言规定不能在
return
关键字和返回值表达式之间换行。因此,在换行符之前插入分号可以消除语法错误。该错误只是一个简单的“语法错误”。我已经考虑了下面的人所说的,我仍然会遇到错误。问题不在于writecontent()函数,而在于ajaxinclude()函数。我还想提一提,你没有