从AJAX调用到PHP的奇怪的JavaScript语法错误

时间:2010-03-23 15:53:06

标签: php javascript ajax

长期读者,第一次海报。非常感谢任何帮助。

我使用JavaScript制作了一个AJAX查询。该脚本工作正常,界面做我想要的,但Firefox给我一个与被击中的PHP文件相关的错误消息。这很奇怪,因为它似乎表明PHP中存在语法错误,但这没有任何意义。这是错误:

错误:语法错误 源文件:http://www.mysite.com/includes/ajax.php?action=checkpsudo&value=fd 行:1,列:1 源代码: 是

Javascript在下面。有人可以帮帮我吗?感谢。

var ajaxobject = createajaxobjectObject();

function createajaxobjectObject() {
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        ajaxobject = new XMLHttpRequest();
        if (ajaxobject.overrideMimeType) {
            // set type accordingly to anticipated content type
            ajaxobject.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            ajaxobject = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                ajaxobject = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!ajaxobject) {
        alrt('Cannot create XMLHTTP instance');
        return false;
    }
    return ajaxobject; 
}

function checkpsudo(value) {    

    if (value == "") {
        document.getElementById('feedback').innerHTML = "Please select a psudonym";
        document.getElementById('feedback').className = "fail";
        document.getElementById('done').disabled=true;  
    } else {
        ajaxobject.onreadystatechange = function() { check(); };              
        ajaxobject.open('GET', '/includes/ajax.php?action=checkpsudo&value='+value, true);
        ajaxobject.send(null);  
    }


}

function check() {
    if (ajaxobject.readyState == 4) {

        //IF WE GOT OUR CHAT XML BACK CORRECTLY
        if (ajaxobject.status == 200) {             

            var response = ajaxobject.responseText;

            var value = document.getElementById('psudoentry').value;

            if(response=='no') {
                document.getElementById('feedback').innerHTML = "'" + value + "' is already being used";
                document.getElementById('feedback').className = "fail";
                document.getElementById('done').disabled=true;
            } else {
                document.getElementById('feedback').innerHTML = "'" + value + "' is available";
                document.getElementById('feedback').className = "success";
                document.getElementById('done').disabled=false;
            }                                          

        } else {
            alert('There was a problem with the request.');
        }
    }
}

3 个答案:

答案 0 :(得分:1)

看起来你的PHP可能会生成通知或警告 - 然后生成的XML中的第一件事不是XML元素,而是字符串“Notice:etc. etc.”,这会导致浏览器抱怨它得到的东西与它预期的格式不符。根据我的经验,有时这会破坏一切,有时候没有任何明显的效果。我会在您的服务器上关闭通知和警告 - 如果这样可以解决问题,那么您就知道从哪里开始跟踪它。

答案 1 :(得分:1)

我的第一直觉是,这不是JS的问题,而是PHP脚本输出XML。

答案 2 :(得分:0)

为什么这不合理?如果php文件有语法问题,那么ajax调用将返回错误页面,服务器会吐出,并且当FF尝试解析响应时,它将显示在FF错误控制台中