1

我正在尝试使用他们的 facebook id 对我的用户进行身份验证。为此,我有他们的 facebook id。注册时保存在我的数据库中。我正在为此使用 facebook 的 javascript API,它工作正常,使用用户基本信息将用户带回我的网站,成功时来自 .aspx 页面的位置我正在使用 jQuery ajax 调用

FB.Event.subscribe('auth.statusChange', function (response) {
if (response.authResponse) {                                                                                       FB.api('/me?email?dob', function (me) {                                                   if (me.name) {                                                       
   emid = me.email;
   $.ajax({
           url: 'index.aspx/checkuser',
           type: 'POST',
           contentType: 'application/json',
           data: JSON.stringify({ eid: emid }),
}
})
});

上面的代码在我的 masterpage.aspx 到我的代码中的一个 webMethod 后面是一个静态方法

[WebMethod]
    public static void checkuser(string eid)
    {
        checkFBDB objChk = new checkFBDB();
        objChk.isFBIDExists(eid);


    }

此代码在内容页面 index.aspx 上,在该方法中,我通过创建类对象 public class checkFBDB 来调用类函数:System.Web.UI.Page {

    public void isFBIDExists(string fbID)
    {

        string cnString = string.Empty;

        cnString = ConfigurationManager.ConnectionStrings["connectionString"].ToString();

            SqlDataReader dR = SqlHelper.ExecuteReader(cnString,
         CommandType.Text, "SELECT * FROM smsUsers WHERE fbA='" + fbID + "' ");

            if (dR.Read())
            {

                Session["userName"] = dR["userName"].ToString();
                Session["smsCredit"] = int.Parse(dR["SMSCredit"].ToString());
                Session["sender"] = dR["FName"].ToString();
                Session["userMob"] = dR["MobileNo"].ToString();
                HttpContext.Current.Server.Transfer("AuthenticatedForms/sendMessage.aspx");

            }

            else
            {
                HttpContext.Current.Server.Transfer("~/mapFBID.aspx",true);
            }
       }
}

它打开与数据库的连接,并使用提供的 facebook id 验证用户是否存在于我们的数据库中,然后 "HttpContext.Current.Server.Transfer("AuthenticatedForms/sendMessage.aspx");" 我正在使用这个语句,但问题是如果我使用来自正常页面的相同语句,它可以正常传输,但是从这个代码类它传输执行我在调试模式下看到的所有操作,但返回到 web 方法所在的页面调用它正在调用此代码类来转移控制权。我正在使用母版页。Visual Studio 2010,后端是 SQL SERVER 2000。以下是我的代码。提前感谢您的任何帮助。

4

1 回答 1

1

您需要考虑的事情很少。

  1. 您正在进行 AJAX 调用,并且在成功时您希望将使用重定向到页面。
  2. Server.Transfer确实将目标页面的内容写入响应流中,这无助于我们将用户带到不同的页面,尤其是在 AJAX 调用期间。
  3. 您可以执行Response.Redirect,但即使是这种情况也行不通,因为 AJAX 逻辑完全不知道理解 302 响应。

我建议遵循 SO 问题“如何在 jQuery Ajax 调用后管理重定向请求

于 2012-10-22T09:57:26.957 回答