将变量从jQuery传递到WebMethod(身份验证失败)
Pass variable from jQuery to WebMethod (Authentication failed)
我在VS2013中创建一个新的WebForms应用程序。我没有更改任何内容并创建了一个简单的页面。我想在用户单击按钮时在客户端加载此表
<table id="tblHelpRow">
<thead>
<tr class="title">
<th>F2
</th>
<th>F3
</th>
</tr>
</thead>
<tbody id="helpRowBody">
<%=MyRow %>
</tbody>
</table>
<asp:LinkButton ID="lnkEdit" runat="server" onclick="fnEdit();" />
这是我的脚本代码:
function fnEdit() {
BindGridView();
};
function BindGridView() {
rowid = {rowID:2};
$.ajax({
type: "POST",
url: "Default.aspx/GetRow",
contentType: "application/json; charset=utf-8",
data: param,
dataType: "json",
success: function (data) {
alert(data);
}
});
}
我的代码隐藏中有一个 WebMethod,存储结果为公共属性。数据源我存储在会话中,但行 ID 我需要从 jquery 传递。
[WebMethod]
public static string GetRow(int rowID)
{
DataTable dt = (DataTable)HttpContext.Current.Session["SourceData"];
MyRow = "<tr>" +
"<td>" + dt.Rows[rowID]["F2"].ToString() + "</td>" +
"<td>" + dt.Rows[rowID]["F3"].ToString() + "</td>" +
"</tr>";
return "done";
}
但我没有得到任何结果。当我成功放置中断时,我收到"身份验证失败"错误,并且此网络方法未执行。怎么了?我没有更改蚂蚁身份验证设置。
尝试删除 ScriptMethod 属性。您正在指定 POST 操作类型,但我相信脚本方法默认强制请求为 GET。另外,我相信您的参数需要是一个 JSON 字符串而不仅仅是一个整数:
var param = {rowID:2};
$.ajax({
type: "POST",
url: "Default.aspx/GetRow",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(param),
dataType: "json",
success: function (data) {
alert(data);
}
});
在我的VS2013 Web表单项目中,罪魁祸首是:
var settings = new FriendlyUrlSettings {AutoRedirectMode = RedirectMode.Permanent};
FriendlyUruls 的默认设置解决了这个问题 - 不要使用 RedirectMode.Permanent。
像这样的 ajax 调用,其中数据参数很复杂。
$.ajax({
type: "POST",
contentType: "application/json",
url: applicationBaseUrl + "mypage.aspx/Calc",
data: params // data is json
}).success(function (data, status, xhr) {
//...
}).error(function (xhr, status, error) {
//...
});
像这样的网络方法
[WebMethod]
public static string Calc(IEnumerable<AiApp> aiApps, Guid guid)
{ //...
使用
$.ajax({
type: "POST",
url: "Default.aspx/GetRow",
contentType: "application/json; charset=utf-8",
data: {rowID:2},
dataType: "json",
success: function (data) {
alert(data);
}
});
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 身份验证后获取Facebook图片
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- Twitter应用程序专用身份验证
- Passport.js成功的身份验证根本没有调用
- 通过JavaScript访问需要身份验证的页面
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用JavaScript捕获基本身份验证凭据
- javascript中的Spotify身份验证
- ServiceStack JavaScript服务器事件客户端的身份验证
- Twitter API 1.1无法对您2进行身份验证
- javascript api,用于在第三方域上存储身份验证令牌
- 实施Facebook's无用户身份验证的Graph API
- CRM身份验证问题
- 将变量从jQuery传递到WebMethod(身份验证失败)