jquery mobile中ajax php-login身份验证的解析器错误


parser error in ajax php-login authentication in jquery mobile

这是我的javascript和php代码登录在jquery移动,但我得到了这个请求的解析器错误。请帮我一下。

<script>    
            $("#login").click( function () {
                //collect userName and password entered by users
                var username = $("#username").val();
                var password = $("#password").val();

                //call the authenticate function
                authenticate(username, password);
            });

        //authenticate function to make ajax call
           function authenticate(username, password) {
           $.ajax({url: "http://localhost/track/signinmobile.php",
           data: '{"username": "' + username + '", "password" : "' + password + '"}',
            dataType: "jsonp",
            jsonpCallback: 'successCallback',
            async: true,
            beforeSend: function() {
                $.mobile.showPageLoadingMsg(true);
            },
            complete: function() {
                $.mobile.hidePageLoadingMsg();
            },
            success: function (result) {
                alert(result);
            },
            error: function (request,error) {
                alert("this is"+ error);
            }, 
           successCallback:function(){
            }
        });
    </script>
    <div data-role="fieldcontain" class="ui-hide-label">
                                   <form id="login" >
                                    <label for="username">Username:</label>
                                    <input type="text" name="username" id="username" value="" placeholder="Username"/>
                                    <label for="password">Password:</label>
                                    <input type="password" name="password" id="password" value="" placeholder="Password"/>
                                    <input type="submit" name="login" id="login"  value="Login"/>
                                    </form>                               
                        </div>  

是否有任何错误在我的javascript代码?这是我的signinmobile.php和数据库连接正在工作。

<?php include"connection.php";
$email=$_GET['username'];
$password=$_GET['password'];
$user=mysql_query("SELECT * FROM users");
while($row=mysql_fetch_array($user))
{
    if (($email==$row['email']) && ($password==$row['password']))
    { 
    $response_array['status'] = 'success'; 
    }
    else {
   $response_array['status'] = 'error'; 
      }
}
header('Content-type: application/json');
echo json_encode($response_array);
?>

您缺少一个}来关闭认证功能。

此外,您的表单和提交按钮具有相同的id。一般来说,使用两个具有相同id的html标签是一个坏主意,这意味着您的函数在单击表单后被调用。

你应该把你的脚本包装在$(document).ready.

$(document).ready(function() {
    // your script.
});

这将防止脚本在元素加载之前运行。

您还应该通过使用return false;语句结束click函数来防止表单提交。这将阻止页面刷新。

我没有jsonp的经验,但它会为我生成一个错误。我建议使用正常的json,但我不知道你的其他计划与脚本。

发送到服务器的数据是一个字符串,您应该使用javascript对象。这是通过删除引号和加号来完成的。

data: { username: username, password: password },