2014-05-04 77 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; 
    } 
}