将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;
    }

将javascript与asp.net连接起来

您需要使用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