Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么“\n”被挂起到我的HTTP(AJAX)responseText?_Php_Javascript_Ajax - Fatal编程技术网

Php 为什么“\n”被挂起到我的HTTP(AJAX)responseText?

Php 为什么“\n”被挂起到我的HTTP(AJAX)responseText?,php,javascript,ajax,Php,Javascript,Ajax,此特定AJAX调用返回的值\n位于responseText返回的值之前 它以前没有这样做,现在当我测试if request.responseText==100的有效返回代码时,它失败了,因为它现在等于\n100 我知道我可以去掉\n,但这将是一个解决方法,我更希望找到原因并修复它 以下是我的客户端代码: function AJAX(){ var xmlHttp; try{ xmlHttp=new XMLHttpRequest(); // Firefox, Op

此特定AJAX调用返回的值\n位于responseText返回的值之前

它以前没有这样做,现在当我测试if request.responseText==100的有效返回代码时,它失败了,因为它现在等于\n100

我知道我可以去掉\n,但这将是一个解决方法,我更希望找到原因并修复它

以下是我的客户端代码:

function AJAX(){

    var xmlHttp;

    try{
        xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
        return xmlHttp;
    }
    catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
            return xmlHttp;
        }
        catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                return xmlHttp;
            }
        catch (e){
            alert("Your browser does not support AJAX!");
            return false;
        }
        }
    }
}


function logDetails() {

    var request,
        Result  = document.getElementById('Result'),
        message = document.getElementById('message'),
        url = 'ajax/login.user.php?',
        us  = document.getElementById('username').value,
        pa  = document.getElementById('password').value;

    Result.innerHTML = 'Logging in...';

    if (document.getElementById) {

        request = AJAX();

    }

    if (request) {

        request.onreadystatechange = function() {

            if (request.readyState == 4 && request.status == 200) {

                var r = request.responseText;
//var r = 100;
                if (r == '100') {

                    Result.innerHTML        = 'You are now logged in.';
                    window.location.href    = "prebooks.php";

                }

                else if (r == '101' || r == '102') {

                    Result.innerHTML    = 'Your login attempt failed.';
                    resetDetails();

                }

                else if (r == '103') {

                    Result.innerHTML    = 'Sorry, you have no books subscription.';

                }

                else if (r == '999') {

                    Result.innerHTML    = 'You have no more attempts!';
                    message.innerHTML   = 'Please call us on (02) XXXXXXX so that we can assist you.';

                } else {

                    alert(r);

                }
            }
        };
    }
    // add my vars to url
    url += "arg1="+us+"&arg2="+pa;

    request.open("GET", url, true);
    request.send(null);
}
<?= 100 ?>
以下是我的服务器端代码:

function AJAX(){

    var xmlHttp;

    try{
        xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
        return xmlHttp;
    }
    catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
            return xmlHttp;
        }
        catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                return xmlHttp;
            }
        catch (e){
            alert("Your browser does not support AJAX!");
            return false;
        }
        }
    }
}


function logDetails() {

    var request,
        Result  = document.getElementById('Result'),
        message = document.getElementById('message'),
        url = 'ajax/login.user.php?',
        us  = document.getElementById('username').value,
        pa  = document.getElementById('password').value;

    Result.innerHTML = 'Logging in...';

    if (document.getElementById) {

        request = AJAX();

    }

    if (request) {

        request.onreadystatechange = function() {

            if (request.readyState == 4 && request.status == 200) {

                var r = request.responseText;
//var r = 100;
                if (r == '100') {

                    Result.innerHTML        = 'You are now logged in.';
                    window.location.href    = "prebooks.php";

                }

                else if (r == '101' || r == '102') {

                    Result.innerHTML    = 'Your login attempt failed.';
                    resetDetails();

                }

                else if (r == '103') {

                    Result.innerHTML    = 'Sorry, you have no books subscription.';

                }

                else if (r == '999') {

                    Result.innerHTML    = 'You have no more attempts!';
                    message.innerHTML   = 'Please call us on (02) XXXXXXX so that we can assist you.';

                } else {

                    alert(r);

                }
            }
        };
    }
    // add my vars to url
    url += "arg1="+us+"&arg2="+pa;

    request.open("GET", url, true);
    request.send(null);
}
<?= 100 ?>
多洛金法中与收益相关的行为:

$pkg[status]=100;
return $pkg[status];
如果我替换echo$L->doLogin$pkg,那么为了确保新线不会在某个地方泄漏;回声100;它起作用了

更新2-已解决
原来问题出在一个包含在doLogin方法中的包含类文件中,该文件最近被更新为在文件顶部包含一个换行符,在开始之前我也遇到了同样的问题,通过向Ajax添加dataFilter选项发现,经过字符串化的JSON返回的消息显示,确实是PHP脚本出现了语法问题。然后,PHP服务器预先挂起了一个HTML小文档来发出错误信号。但是,当回到AJAX时,由于数据类型是“json”,所以返回的整个PHP响应首先是json解析的,因此去掉了所有的HTML前缀,只留下换行符。有效JSON返回数据前面的这些换行符导致JSON数据被认为是语法错误,就是这样!通过dataFilter选项在警报中发送原始数据,我可以看到PHP脚本的初始错误,并且一旦更正,就不会有更多的换行了

我的猜测是,在显示脚本之前,php中有一个空行。这就是服务器端文件的全部内容吗?首先确定它是客户端问题还是服务器问题-查看XHR从服务器返回的确切内容使用firebug或其他控制台来检查请求,但几乎可以肯定它将是@jcoder所说的。服务器端代码是双重回显、remove=或echoGood point@jcoder。我实际上改变了echo$的状态;要回显100,它仍然存在,但现在,我只是用替换了整个脚本,问题被删除了,所以你是对的。也许你应该把它写在答案里。request.send而不是request.sendnull的结果是什么