我正在尝试将一些json数据发布到我的localhost上的asp.netserver。接收代码的页面应该是母版页,但是我试过并得到了#34;错误403:禁止"所以我尝试了一个Web服务,现在我有一大堆其他问题。我的主要问题是我可以在PHP中简单地完成这项工作,但我不知道如何在ASP.NET中进行此操作。
这是我的js文件:
// Get User Login Credentials
function authenticate() {
$(document).ready(function () {
var user = $('.login-box form #txtLoginUsername').val().trim();
var pass = $('.login-box form #txtLoginPass').val().trim();
// alert(user + " : " + pass);
$.ajax({
type: "POST",
url: "postback.asmx/Verify",
data: {
user: user,
pass: pass
},
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function() {
if (response)
{
alert('Works');
}
else {
$(".ui-widget").slideDown(1000, function () {});
}
}
});
});
}
现在我在按钮点击事件上调用此函数,我不添加我的服务器代码,因为它包含我从网络中拾取的几行代码,并尝试混搭以使我的页面工作,它没有& #39;吨。我想知道从帖子中获取JSON对象并从我的服务器返回值/数组的简单适当方法。
我不希望使用任何asp.net服务器控件出于某些原因我无法透露,但我已被限制使用此类控件。
答案 0 :(得分:5)
您无法将WebMethod放在masterPage中。 Ajax是客户端,如果您尝试在浏览器中访问site.master,则会收到相同的错误。
“说明:您所请求的页面类型未被提供,因为它已被明确禁止。扩展名”.master“可能不正确。请查看下面的网址,并确保拼写正确。”
您可以在其他文件.aspx中实现WebMethod,并通过ajax调用。
我写了一个小例子。
CS
[WebMethod(enableSession: true)]
public static void Verify(string user, String pass)
{
throw new Exception("I´m here");
}
JS
function authenticate() {
$(document).ready(function () {
var user = $('#txtLoginUsername').val().trim();
var pass = $('#txtLoginPass').val().trim();
// alert(user + " : " + pass);
var data = {};
data.user = user;
$.ajax({
type: "POST",
url: "default.aspx/Verify",
data: JSON.stringify({
user: user,
pass: pass
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
if (response) {
alert('Works');
}
else {
$(".ui-widget").slideDown(1000, function () { });
}
}
});
});
}
注意Json如何传递数据
data: JSON.stringify({
user: user,
pass: pass
}),
要调用webservice,请尝试以这种方式传递json。
当您调用Web服务时,浏览器的控制台中会出现相同的错误消息吗?
我认为这会对你有帮助。
答案 1 :(得分:0)
您可以使用JSON.stringify()方法,如下所述 var jsonData =你的Jason数据; 数据:JSON.stringify(jsonData)
courtsey: http://www.dotnetlines.com/forum/tabid/86/forumid/6/postid/72/scope/posts/Default.aspx#72
答案 2 :(得分:0)
你可以这样做。
[WebMethod]
public string Verify(string user,string pass)
{
//DataTable dt = YourMethod_ReturningDataTable();
//retrun dt.toJson();
//But in your case
bool IsAllowedtoLogin = true;
return IsAllowedtoLogin.toJson();
}
对于这个(toJson)方法,你创建了一个静态类。这会将数据表转换为json格式。
public static string toJson(this DataTable dataTable)
{
string[] StrDc = new string[dataTable.Columns.Count];
string HeadStr = string.Empty;
for (int i = 0; i < dataTable.Columns.Count; i++)
{
StrDc[i] = dataTable.Columns[i].Caption;
HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";
}
HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);
StringBuilder Sb = new StringBuilder();
Sb.Append("{\"" + dataTable.TableName + "\" : [");
for (int i = 0; i < dataTable.Rows.Count; i++)
{
string TempStr = HeadStr;
Sb.Append("{");
for (int j = 0; j < dataTable.Columns.Count; j++)
{
TempStr = TempStr.Replace(dataTable.Columns[j] + j.ToString() + "¾", dataTable.Rows[i][j].ToString());
}
Sb.Append(TempStr + "},");
}
Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));
Sb.Append("]}");
return Sb.ToString();
}
请注意,数据参数区分大小写。即用户,通过。
$.ajax({
type: "POST",
url: "default.aspx/Verify",
data: "{'user':'"+yourvariable+"','pass':'"+yourvariable+"'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
data = JSON && JSON.parse(data.d) || $.parseJSON(data.d);
if (data == "true") {
alert('Works');
}
else {
$(".ui-widget").slideDown(1000, function () { });
}
}
});