加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – jQuery blackberry ajax问题

发布时间:2020-12-16 03:47:26 所属栏目:asp.Net 来源:网络整理
导读:我有一个asp.net Web应用程序,我正在向移动设备提供.我使用jQuery和jqMobile来实现功能和样式. 该应用程序在iPhone,iPad和Android设备上的safari,谷歌浏览器中运行良好,但我无法让它在除Blackberry火炬之外的任何其他工作.我有一个要求让它在版本5和6黑莓设
我有一个asp.net Web应用程序,我正在向移动设备提供.我使用jQuery和jqMobile来实现功能和样式.

该应用程序在iPhone,iPad和Android设备上的safari,谷歌浏览器中运行良好,但我无法让它在除Blackberry火炬之外的任何其他工作.我有一个要求让它在版本5和6黑莓设备上工作,但似乎登录的ajax请求总是调用错误函数,我不知道为什么.

该应用程序包含几个页面,但我甚至无法通过黑莓手机上的登录页面.有没有其他人设法让黑莓手机上的ajax电话工作?我真的不想为blackberrys打造一套独立的页面

这是登录页面aspx的代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Sicon.Web.WAP.App.Pages.Mobile.Login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="../../JavaScripts/jquery.mobile.min.css" rel="stylesheet" type="text/css" />
    <script src="../../JavaScripts/jquery.min.js" type="text/javascript"></script>
    <script src="../../JavaScripts/jquery.mobile.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="login" runat="server" accept-charset="utf-8">
    <div id="Invoices" data-role="page" data-theme="b">
        <div data-role="header" data-theme="b">
            <h1>
                WAP - Login</h1>
        </div>
        <div data-role="content" data-theme="b">
            <div align="center">
                <img src="Sicon_LogoHz_rgb72.png" />
            </div>
            <ul data-role="listview" data-inset="true">
                <li>
                    <input type="text" value="" name="username" placeholder="Username" id="username" />
                </li>
                <li>
                    <input type="password" value="" name="password" placeholder="Password" id="password" />
                </li>
            </ul>
            <a class="login" data-role="button" data-theme="b">Login</a> <a data-role="button"
                data-theme="a">Cancel</a>
        </div>
    </div>
    </form>
    <script type="text/javascript">

        var _ajaxEnabled = true;

        $(document).ready(function()
        {
            _ajaxEnabled = $.support.ajax;
        });

        //Get base URL
        var baseUrl = "<%= ResolveUrl("~/") %>";

        //Function to resolve a URL
        function ResolveUrl(url)
        {
            if (url.indexOf("~/") == 0) 
            {
                url = baseUrl + url.substring(2);
            }
            return url;
        }

        //Login form Login link click
        $("#login a.login").click(function (e) {
            //Get the form
            var $form = $(this).closest("form");

            //Perform login
            return app.login($form);
        });

        //Login form submit
        $("#login").submit(function (e) {
            //Get the form
            var $form = $(this);

            //Perform login
            return app.login($form);
        });

        //class to handle login
        var app = {
            login: function ($form) {

                var $Username = $("#username").val();
                var $Password = $("#password").val();

                //Call the approve method on the code behind
                $.ajax({
                    type: "POST",url: ResolveUrl("~/Pages/Mobile/Login.aspx/LoginUser"),data: "{'Username':'" + $Username + "','Password':'" + $Password + "' }",//Pass the parameter names and values
                    contentType: "application/json; charset=utf-8",dataType: "json",async: true,error: function (jqXHR,textStatus,errorThrown) {
                        alert("Error- Status: " + textStatus + " jqXHR Status: " + jqXHR.status + " jqXHR Response Text:" + jqXHR.responseText) },success: function (msg) {
                        if (msg.d == true) {
                            window.location.href = ResolveUrl("~/Pages/Mobile/Index.aspx");
                        }
                        else {
                            //show error
                            alert('login failed');
                        }
                    }
                });

                return false;
            }
        }
    </script>
</body>
</html>

最后是登录方法的代码:

/// <summary>
/// Logs in the user
/// </summary>
/// <param name="Username">The username</param>
/// <param name="Password">The password</param>
/// <returns></returns>
[WebMethod,ScriptMethod]
public static bool LoginUser( string Username,string Password )
{
    try
    {
        StaticStore.CurrentUser = new User( Username,Password );

        //check the login details were correct
        if ( StaticStore.CurrentUser.IsAuthentiacted )
        {
            //change the status to logged in
            StaticStore.CurrentUser.LoginStatus = Objects.Enums.LoginStatus.LoggedIn;

            //Store the user ID in the list of active users
            ( HttpContext.Current.Application[ SessionKeys.ActiveUsers ] as Dictionary<string,int> )[ HttpContext.Current.Session.SessionID ] = StaticStore.CurrentUser.UserID;

            return true;
        }
        else
        {
            return false;
        }
    }
    catch ( Exception ex )
    {
        return false;
    }
}

解决方法

你没有说你正在使用哪个版本的jqmobile.版本4.1于4月7日发布.您必须记住,jqmobile尚未发布Beta版本,并且BB OS 5被列为B级(http://jquerymobile.com/gbs/),因此它正在获取较少关注.

你可能在你的应用程序中有其他ajax来处理但是登录是如此简单,为什么不重组为一个简单的表单帖子?

另外,承认BB5是一个问题:

https://github.com/jquery/jquery-mobile/issues/1245

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读