Ошибка синтаксиса JavaScript - PullRequest
       5

Ошибка синтаксиса JavaScript

0 голосов
/ 17 сентября 2010

Может кто-нибудь выяснить, почему это вызывает синтаксическую ошибку? Весь код выглядит правильно для меня.

<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 ]

2 голосов
/ 17 сентября 2010

В вашей функции writecontent вы вызываете аргумент page_request, но затем ссылаетесь на него в теле функции как pagerequest (без подчеркивания).

В противном случае ваш код должен работать- см. http://jsfiddle.net/2eynH/ для примера.

2 голосов
/ 17 сентября 2010

Yopur writecontent is wronge (именование аргумента) try:

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 голос
/ 17 сентября 2010

Перво-наперво - используйте http://jslint.com/

Вам не нравится ваша writecontent функция.

И pagerequest = new XMLHttpRequest() пропущена точка с запятой.

Также,Я также люблю «копировать» мой JavaScript через YUI Compressor, чтобы помочь выявить синтаксические ошибки.

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

Еще несколько пропущенных точек с запятой:

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

Еще одна вещь,Даже если javascript позволяет вам что-то делать, это не значит, что вы должны это делать.Объявление запроса страницы как логического значения, а затем установка его в ActiveXObject немного сбивает с толку.Я вероятно инициализировал бы это к нулю.Затем "проверьте" на null позже в коде.

0 голосов
/ 17 сентября 2010

Ваш код недействителен.Точки с запятой добавляются в ваш код, когда его нет или он думает, что он должен иметь его.

Таким образом, в

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

компилятор javascript сделает следующее:

Как большинство людей предложили запустить JSLint поверх него, чтобы увидеть ошибки.

Редактировать из комментария

Подробности вставки точек с запятой можно увидеть в блоге

0 голосов
/ 17 сентября 2010

Вы пропускаете точки с запятой почти во всех строках.

Код очистки:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...