将javascript与asp.net连接起来
本文关键字:连接 起来 net asp javascript | 更新日期: 2023-09-27 17:59:26
我很难通过ajax和json将javascript与asp.net的webforms方法连接起来。
我在一个文件夹中有javascript,在另一个文件夹里有page.aspx,例如:-帐户/createUser.aspx-脚本/actions/createuser.js
我已经尝试了很多东西,例如,在使用之前的方法[Webmethod],在ajax操作中更改了很多事情,但都不起作用。在大多数情况下,谷歌chrome会给出错误:
帖子/Account/createUser.aspx/CheckUserName 401(未经授权)
如果我删除javascript中的行,如:"dataType:json"answers"contentType:application/json;charset=utf-8",错误将消失,并在"complete"行输入。。。
我需要指示来解决这个问题。。。我搜索了很多帖子,遵循了很多教程,什么都不意味着工作。例如:更改我的webconfig以接受任何用户,我的routeconfig.cs…
有什么假的吗?什么我需要声明一些东西才能使用json吗?
Javascript:
$("#USUserName").change(function () {
alert($("#USUserName").val());
$.ajax({
type: "POST",
url: "createUser.aspx/CheckUserName",
data: '{username: "' + $("#USUserName").val() + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (jsondata, stat) {
if (stat == "success") {
var response = JSON.parse(jsondata.responseText).d;
alert((response));
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert();
}
});
aspx.cs代码:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string CheckUserName(string username)
{
var existUser = context.user.Where(us => ((us.username).Equals(username))).Count();
string returnValue = string.Empty;
if (existUser.Equals(0))
{
returnValue = "test- yes!";
}
else
returnValue = "test- no!";
return returnValue;
}
您需要使用WebMethod属性才能使用ajax进行调用(如果域相同)。
C#
public partial class PageName: Page
{
[WebMethod]
public static string MethodName()
{
return "success";
}
}
JS-
$.ajax({
type: "POST",
url: "PageName.aspx/MethodName",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something interesting here.
}
});-
来源:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
如果域不同,则必须编辑跨域策略:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
参见MS文档:
ScriptMethodAttribute属性是可选的。(但是,方法可以从客户端脚本调用的必须具有应用了System.Web.Services.WebMethodAttribute属性。)。如果方法未标记为ScriptMethodAttribute,则该方法将通过使用HTTPPOST命令调用,响应将为序列化为JSON。您不能从脚本中覆盖此设置。
如果您只想要JSON并使用HTTPPOST方法,请删除可选的[ScriptMethod…],并确保您只有[WebMethod]
http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx