我试图让客户端点击并重定向到添加了标题信息的另一个站点,我的客户端代码是onclick:
function selectApp(appGUID, userId ,embedUrl)
{
if(embedUrl==="")
{
var success = setAppGUID(appGUID);
window.location.replace('AppDetail.aspx');
}
else
{
$.ajax({
type: "POST",
url: embedUrl,
contentType: "text/html",
beforeSend: function (xhr, settings) {
xhr.setRequestHeader("UserId", userId);
},
success: function (msg) {
//actually redirect to the site
window.location.replace(embedUrl);
}
});
}
}
embedUrl
中的服务器端代码是
protected void Page_Load(object sender, EventArgs e)
{
string isSet = (String)HttpContext.Current.Session["saveUserID"];
if (String.IsNullOrEmpty(isSet))
{
NameValueCollection headers = base.Request.Headers;
for (int i = 0; i < headers.Count; i++)
{
if (headers.GetKey(i).Equals("UserId"))
{
HttpContext.Current.Session["saveUserID"] = headers.Get(i);
}
}
}
else
{
TextBox1.Text = HttpContext.Current.Session["saveUserID"].ToString();
}
}
这似乎有效但不太优雅。有没有办法重定向标题数据?没有(我正在做什么)在会话变量中保存标题信息,然后在2个单独的部分中进行重定向。
答案 0 :(得分:0)
您可以实现页面方法并向其发布数据。 在该方法中移动当前逻辑。
请参阅以下示例:
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
http://www.asp.net/ajaxlibrary/jquery_webforms_Post_Data_To_PageMethod.ashx
成功发布后,您可以重定向到当前实施的其他页面。
修改:尝试以下内容:
1)在Code behind
中添加Web方法 [WebMethod]
public static string SaveUserId(string userId)
{
string sessionUserId= (string)HttpContext.Current.Session["saveUserID"];
if (string.IsNullOrEmpty(sessionUserId))
HttpContext.Current.Session["saveUserID"] = userId;
else
TextBox1.Text = sessionUserId;
}
2)从JS </ p>调用它
//Add here code before..
$.ajax({
url: "PageName.aspx/SaveUserId",
data: "{'userid':" + userid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json"
success: function (msg) {
//actually redirect to the site
window.location.replace(embedUrl);
}
});
有关使用jQuery调用Page方法的更多信息: