Android浏览器上的Javascript Ajax-Request

时间:2014-11-16 15:45:41

标签: javascript php android ajax

我在自己的网站上有一个登录表单。
我通过普通JavaScript AJAX请求将userdate发送到PHP后端,后端正在检查凭据。
这适用于我在PC和iPad上的所有浏览器。 我的问题出现在我的Android设备上(我在那里使用Chrome和标准浏览器)。

问题是,我必须发送2次 AJAX-request 才能得到答案。

为了证明这一点:我在发送请求后发出警报并在回答回调函数内发出警报。如果我发出第一个请求,则只会弹出第一个警报。如果我第二次发送,第二个警告也会弹出。

此问题是否存在已知错误(解决方法)?

我认为,代码不是必需的,因为我没有做任何特别的事情,但是你已经拥有了它。


代码段(纯JavaScript):

function loginStart(strURL, myForm, callback) 
{
      xmlhttpPostForm(strURL, myForm, callback);
      alert("sent out");
}

function loginEnd(result) 
{
      alert("returned");
}


function xmlhttpPostForm(strURL, myForm, callback) {

    var xmlHttpReq = false;
    var self = this;

    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            callback(self.xmlHttpReq.responseText);
        }
        else if (self.xmlHttpReq.status != 200){
            callback("Unknown error occured.");
        }
    }
    self.xmlHttpReq.send(getquerystring(myForm));
}

PHP-Backend(删除功能)

<?php

$retval = array();
$retval['msg'] = "Nothing special to minimize error-sources";
$retval['success'] = true;
echo json_encode($retval);

?>

表格:

<form method="post" name="login_form" onsubmit="loginStart('includes/ajax_login.php', this, loginEnd); return false;">
    <table id="login">
        <tr>
            <th colspan="2" class="center">Login</th>
        </tr>
        <tr>
            <td class="right">Username</td>
            <td class="left"><input id="inEmail" type="text" name="email"></input></td>
        </tr>
        <tr>
            <td class="right">Password</td>
            <td class="left"><input id="inPass" type="password" name="password"></input></td>
        </tr>
        <tr>
            <td class="center"><input type="submit" value="Login" /></td>
            <td class="left"><img class="loadbar" id="loginloader" src="images/loader-bar.gif"/></td>
        </tr>
    </table>
</form>

编辑:根据@Vivasaayi的要求,我添加了一个额外的提醒。

self.xmlHttpReq.onreadystatechange = function() {
    alert("Returned: " + self.xmlHttpReq.readyState + " " + self.xmlHttpReq.status);
    if (self.xmlHttpReq.readyState == 4) {

......

在好的情况下:

警报:退回:2 200        退回:3 200        退回:4 200

在最坏的情况下:

首先点击: 没有

第二次点击: 提醒:退回:2 200        退回:3 200        退回:4 200        退回:4 200

0 个答案:

没有答案