您好我正在尝试使用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
});
}
这是a 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);
}
答案 0 :(得分: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,在AJAX调用的success
函数中,设置位置:
window.location = res;
或者也许:
window.location = res.d;
答案 1 :(得分:3)
您需要让您的Web方法传回要重定向到其配置文件的用户的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);
}
答案 2 :(得分:2)
您可以将您生成的此网址发送给您Javascript(响应ajax调用),然后使用Javascript代码重定向,而不是使用HttpResponse.Redirect。
答案 3 :(得分: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");
}