【问题标题】:Using Ajax method call in Asp.net application在 Asp.net 应用程序中使用 Ajax 方法调用
【发布时间】:2014-06-21 00:19:29
【问题描述】:

我有这个 aspx 视图:

 jQuery('#addjob').click(function () {
            if ($('#metier').val().length > 0) {
                $('.taglist').append('<li style="line-height: 20px"><a href="" style="width:250px" >' + $('#metier').val() + '<span class="icon-remove"></span></a></li>');
                $.ajax({
                    type: "POST",
                    url: "JobsEdition.aspx/AjouterMetier",
                    data: "{'job': '" + $('#metier').val() + "'}",
                    success: function (msg) {
                        AjaxSucceeded(msg);
                    },
                    error: AjaxFailed
                });
                                              }
            $('#metier').val('');
        });

这是我得到的结果:

在后面的代码中我放了这个方法:

 public partial class JobsEdition : System.Web.UI.Page
    {
      List<string> jobs = new List<string>();
        [WebMethod()]
        public void AjouterMetier(string job)
        {
            if (job != "")
            {
                jobs.Add(job);
                Session["jobs"] = jobs;
            }

        }
}

我是在 Asp.net 中使用 ajax 的初学者,所以我总是将会话变量 Session["jobs"] null 并且从未达到方法 AjouterMetier

  • 我犯了什么错误?
  • 我该如何解决?

【问题讨论】:

  • 如果您只是在浏览器的地址栏中输入 url &lt;myserver&gt;/JobsEdition.aspx/AjouterMetier(其中 是您的页面所在服务器的 url),您会收到任何 ASPX 或 HTTP 错误吗?跨度>
  • WebMethod 需要是静态的。公共静态无效 AjouterMetier(字符串作业)
  • @Samuel 当我将其更改为静态 ==> 我必须将作业列表也更改为静态,我收到此错误 session is unknown type

标签: jquery html asp.net ajax session


【解决方案1】:

要使 Web 方法与会话一起工作,您需要以这种方式注释 [WebMethod(enableSession: true)],您的 Web 方法是静态的,您也需要将列表更改为静态,要在静态方法中访问会话,您需要参考会话如何HttpContext.Current.Session。

我想这会解决你的问题

试试这个

cs

static List<string> jobs = new List<string>();
[WebMethod(enableSession: true)]
public static void AjouterMetier(string job)
{

    if (job != "")
    {
        jobs.Add(job);
        HttpContext.Current.Session["jobs"] = jobs;
    }

}

js

jQuery('#addjob').click(function () {
            if ($('#metier').val().length > 0) {
                $('.taglist').append('<li style="line-height: 20px"><a href="" style="width:250px" >' + $('#metier').val() + '<span class="icon-remove"></span></a></li>');
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/AjouterMetier",
                    data: "{'job': '" + $('#metier').val() + "'}",
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (msg) {
                    AjaxSucceeded(msg);
                },
                error: AjaxFailed
                });
            }
            $('#metier').val('');
        });

【讨论】:

    【解决方案2】:

    自从您将项目添加到会话中:

    Session["jobs"] = jobs;
    

    您可能希望通过从之前的会话中获取变量来初始化该变量。例如:

    public void AjouterMetier(string job)
    {
      if (job != "")
      {
        jobs = (List<string>)Session["jobs"] ;
        if( jobs == null )
          jobs = new List<string>();
    
        jobs.Add(job);
        Session["jobs"] = jobs;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多