Ajax请求返回:数据Udefined成功后

时间:2018-04-03 07:57:37

标签: c# jquery asp.net ajax web

我正在尝试使用异步ajax 请求和WebMethod 从dataBase执行一些Get_Data 一切正常,但是当我想从我的web方法值返回值时,我得到了未定义的值

我知道此问题是在之前提出的 我已经尝试了几乎所有的建议来实现我的目标,但不幸的是没有发生任何事情。

  1. 在函数外创建实例,而不是将其设置为返回值。
  2. 设置dataType:"Json"
  3. 在函数内创建一个实例并将其设置为空字符串 var ReturnValue="";
  4. 让Json对象将我的返回值字符串化
  5. 以及许多其他步骤

    所以请不要将我的问题标记为重复值

    以下是我的代码:

    //Javascript and Jquery Codes
     $(document).ready(function() {
         $("#PValidateLogin").hide();
    
     });
    
     function killSpaces(element) {
         var characters = element.toString();
         var resultText = "";
         for (var i = 0; i < characters.length; i++) {
             if (!(characters[i] == " ")) {
                 resultText += characters[i];
             }
         }
         return resultText;
     }
    
    
     $("#<%=btnLogin.ClientID%>").click(function() {
         var MyWantedhref;
         var Result = ValidateMyLogin();
         if (typeof Result === "undefined") {
             alert("Something wrong with codes");
         } else if (Result == "false" || killSpaces(Result).length == 0) {
             alert("wrong user ");
         } else {
             MyWantedhref = "/Frm_Manager/frm_MenuCategory.aspx";
             location.replace(MyWantedhref);
         }
     });
    
    
     function ValidateMyLogin() {
         var ReturValue;
         var UserName = $("#<%=txtUserName.ClientID%>").val();
         var Password = $("#<%=txtUserPassword.ClientID%>").val();
         if (killSpaces(Password).length >= 4 && killSpaces(UserName).length >= 4) {
             $.ajax({
                 type: "POST",
                 contentType: "application/json;charset=utf-8",
                 dataType: "json",
                 url: "frm_ValidateLogin.aspx/ValidateLogin",
                 data: "{'UserName':'" + UserName + "','Password':'" + Password + "'}",
                 success: function(data) {
                     ReturValue = data.d;
                 },
                 error: function(err) {
                     ReturValue = err.d;
                 }
             });
         }
    
         return ReturValue;
     }
    

    以下是C#代码

    <code>
     private static OwnerAccountBO _OwnerAccountBO;
            public static OwnerAccountBO OwnerAccountBO { get { return new OwnerAccountBO(); } set { _OwnerAccountBO = value; } }
    
            [WebMethod(EnableSession = true)]
            public static string ValidateLogin(string UserName, string Password)
            {
                string CharResult = "";
                object[] UserParameters = { UserName, Password };
                int Result = OwnerAccountBO.validateLogin(UserParameters);
                if (Result > 0)
                {
                    HttpContext.Current.Session["OwnerAccountID"] = Result;
                    CharResult += Convert.ToString(Result);
                }
                else
                {
                    CharResult += "false";
                }
                return CharResult;
            }
    </code>
    

    请任何帮助都会感激不尽。 当然,我希望对错误的操作或流程进行适当的解释,以便产生此类错误

1 个答案:

答案 0 :(得分:0)

您从方法

返回了一个字符串值
- (BOOL)isUserNotificationAllowed {
    UIUserNotificationType types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
    if(types & UIUserNotificationTypeBadge || types & UIUserNotificationTypeSound || types & UIUserNotificationTypeAlert){
        return YES;
    }
    else {
        return NO;
    }
}

所以在你的ajax中必须像这样收到

string CharResult = "";
        object[] UserParameters = { UserName, Password };
        int Result = OwnerAccountBO.validateLogin(UserParameters);
        if (Result > 0)
        {
            HttpContext.Current.Session["OwnerAccountID"] = Result;
            CharResult += Convert.ToString(Result);
        }
        else
        {
            CharResult += "false";
        }
        return CharResult;

                      $.ajax({ 
                        success: function (data)
                        {                                
                            ReturValue = data; //fixed it with this
                        }  
                    });