2014-05-04 71 views
0

我有这样的aspx观点:使用Ajax方法调用

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(''); 
     }); 

这是结果我得到:

im2

在代码behin我把这个方法:

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"]空和方法AjouterMetier从未达到。

  • 什么是我COMMITED错误?
  • 我该如何解决?
+1

如果你只是输入网址' /JobsEdition.aspx/AjouterMetier '(其中是URL到您的网页是关于服务器)到浏览器的地址栏,你会得到任何ASPX或HTTP错误? –

+1

WebMethod需要是静态的。公共静态无效AjouterMetier(串作业)时,我将其更改为静态==>我也必须改变作业列表中静态和我得到这个错误 –

+0

@Samuel'会话是未知type' –

回答

1

不同,需要anotate这样一个会话[的WebMethod(enableSession:真)] WEBMETHOD工作,谁是你的WebMethod是静态的,你需要列表改为静态太大,接取一个会议在一个静态方法中,你需要引用一个会话如何HttpContext.Current.Session。

我THIK这将解决你的问题

试试这个

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(''); 
     }); 
1

由于您将项目添加到会话:

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