10

您好,我正在尝试从 aspx 页面运行带有 ajax 的 webmethod。基本上我想用查询字符串重定向到另一个 aspx 页面,但我想从 开始<a href>,因为它是 jquery 菜单的一部分。

据我所知,我只能使用 ajax 调用静态 webmethods,但我无法从我的静态函数重定向。

Visual Studio 用红线标记它:“非静态字段方法或属性 System.Web.HttpResponse.Redirect(string) 需要对象引用”

这是ajax调用:

function redirect_to_profile() {
    $.ajax({
        type: "POST",
        url: "personal_profile.aspx.cs.aspx/redirect_to_profile",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (res) {
           alert("success");
        },
        error: function (res, msg, code) {
            // log the error to the console
        } //error
    });
}

这是一个href:

<a  onclick="redirect_to_profile()">Personal Profile</a>

这是personal_profile.aspx中的webmethod

[WebMethod]
public static void redirect_to_profile()
{

    dbservices db=new dbservices();
    string user = HttpContext.Current.User.Identity.Name;
    string id = db.return_id_by_user(user);

    HttpResponse.Redirect("personal_profile.aspx?id="+id);
}
4

4 回答 4

21

您需要将构建的 URL 返回给客户端:

public static string redirect_to_profile()
{
    dbservices db=new dbservices();
    string user = HttpContext.Current.User.Identity.Name;
    string id = db.return_id_by_user(user);
    return "personal_profile.aspx?id="+id;
}

然后使用 JavaScript,在successAJAX 调用的函数中,设置位置:

window.location = res;

也许:

window.location = res.d;
于 2013-06-12T19:11:34.673 回答
3

您需要让您的网络方法传回您想要重定向到其个人资料的用户的 ID,然后在您的 jQuery 成功回调中将 window.location 设置为路径加上查询字符串,如下所示:

function redirect_to_profile() {
    $.ajax({
        type: "POST",
        url: "personal_profile.aspx.cs.aspx/redirect_to_profile",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (res) {
            // Redirect to personal_profile.aspx passing it the ID we got back from the web method call
            window.location = "personal_profile.aspx?id=" + res;
        },
        error: function (res, msg, code) {
            // log the error to the console
        } //error
    });
}

[WebMethod]
public static string redirect_to_profile()
{
    dbservices db=new dbservices();
    string user = HttpContext.Current.User.Identity.Name;
    return db.return_id_by_user(user);
}
于 2013-06-12T19:25:27.233 回答
2

您可以将生成的 url 发送给 Javascript(响应 ajax 调用),而不是执行 HttpResponse.Redirect,然后使用 Javascript 代码进行重定向。

于 2013-06-12T19:18:20.400 回答
0

尝试这个:

function myFun(a) {
            var s = null;
            var em = document.getElementById(a + 'productno');
            if (em != null)
                PageMethods.setSession(em.innerText);
            window.location.assign("/Product%20Details.aspx");


        }
于 2014-12-20T00:49:21.577 回答