Синтаксическая ошибка AJAX в XMLHttpRequest.send () - PullRequest
0 голосов
/ 05 апреля 2011

Я работаю через учебник по AJAX . У меня мало опыта работы в Интернете, поэтому я был немного удивлен, когда что-то пошло не так, и я не получил ни трассировки, ни логов, ни ничего.

Я вытащил Firebug, и он говорит, что у меня есть синтаксическая ошибка на обоих моих send() вызовах.

Соответствующие (я думаю) части кода:

function getChatText() {
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        receiveReq.open("GET", 'getChat.php?chat=1&last=' + lastMessage, true);
        receiveReq.onreadystatechange = handleReceiveChat; 
        receiveReq.send(null);  // <---  Firebug says an error is here
    }           
}

function sendChatText() {
    if (sendReq.readyState == 4 || sendReq.readyState == 0) {
        sendReq.open("POST", 'getChat.php?chat=1&last=' + lastMessage, true);
        sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        sendReq.onreadystatechange = handleSendChat;
        var param = 'message=' + document.getElementById('txt_message').value;
        param += '&name=John Doe';
        param += '&chat=1';
        sendReq.send(param);  // <--- and also here
    }
}

Я даже зашел так далеко, что скопировал / вставил эти функции из рабочего учебника, но все равно получаю ту же ошибку. Что я делаю не так?

Точный текст ошибки:

Syntax Error: 
    getChatText()       (line 38)
    handleSendChat()    (line 56)
receiveReq.send(null);  (line 38)

1 Ответ

1 голос
/ 05 апреля 2011

Ваша ошибка происходит внутри getChatText (который находится вверху стека вызовов в сообщении об ошибке).

Возможно, вы звоните eval с неверным синтаксисом; возможно, вы забыли заключить JSON в скобки.

Вы должны использовать отладчик Firebug, чтобы отследить ошибку.

РЕДАКТИРОВАТЬ : Попробуйте позвонить encodeURIComponent на lastMessage; это может помочь. (и вам все равно следует это сделать, чтобы предотвратить внедрение URL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...