【发布时间】:2015-05-07 20:04:00
【问题描述】:
我创建了一个 jQuery 模式密码对话框来重定向到一个页面以进行密码验证。
模态对话框显示正常,但不是执行处理密码验证的方法,而是在浏览器警报对话框上显示错误[object Object]。我试图弄清楚我在这里做错了什么。
下面是我的代码:
JavaScript/jQuery
$(document).on("click", "[id*=lnkView1]", function() {
$("#dlgPassword").dialog({
title: "View Details",
buttons: {
Go: function() {
var valPassword = $("[id*=cpgnPassword]").val();
var hdfCamId = $('#<%=rptCampaigns.ClientID %>').find('input:hidden[id$="hdfCampaignID"]').val();
$("[id*=hdfCampaignID2]").val(hdfCamId);
//var jsonObj = '{password: "' + valPassword + '"}';
var res;
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{password: "' + valPassword + '"}',
dataType: 'json',
url: 'CampaignsList.aspx/ValidatePasswordWM',
success: function(data) {
alert('successful')
},
error: function(err) {
alert(err.toString());
}
});
$(this).dialog('close');
}
},
modal: true
});
return false;
});
代码隐藏
protected void ValidatePassword(object password)
{
var campaign = new CampaignsService().GetByCampaignId(hdfCampaignID2.Value);
if (campaign != null)
{
if (campaign.Password.Equals(password))
Response.Redirect("CampaignDetails.aspx?CampaignID=" + hdfCampaignID2.Value);
}
}
[WebMethod]
public static void ValidatePasswordWM(object password)
{
CampaignsList page = new CampaignsList();
page.ValidatePassword(password);
}
谁能帮我找出问题所在?
【问题讨论】:
-
使用 err.responseText 代替 err.toString()
-
感谢@Silence。它向我展示了异常和堆栈跟踪。异常消息:
Object reference not set to the instance of an object.并且堆栈跟踪位于ValidatePassword方法上。我猜password参数为空。这是真的吗? -
不客气@kacey 还有一件事 response.redirect 不适用于 Web 方法,您可以重定向页面客户端
-
这就是为什么它不是直接在网络方法上,而是在我在网络方法下调用的单独方法中
-
@KaceyEzerioha 我看到您在另一个答案下的评论中发布了有关逐步执行代码的信息。您可以使用他们的开发者工具在任何浏览器中单步执行您的 JavaScript 代码。在大多数浏览器中,按 F12 将打开内置调试器的开发工具。
标签: c# jquery asp.net jquery-ui webforms