2014-04-01 58 views
0

我想從jQuery AJAX調用調用服務器端方法,但它不工作。任何幫助,將不勝感激。jQuery AJAX調用服務器端方法不工作

的jQuery調用是:

$('#btnAddAttachment').click(function() { 

    $.ajax({ 
     type: "POST", 
     url: "Ticket.aspx/AddAttachment", 
     contentType: "application/json; charset=utf-8" 
    }); 
}); 

服務器端代碼:

[WebMethod] 
    public void AddAttachment() 
    { 
     string name = txtAttach.FileName; 
     string strPath = ConfigurationManager.AppSettings["crmWorkspacesDir"].ToString() + txtTicketNum.Text + "\\"; 

     if (!Directory.Exists(strPath)) 
      Directory.CreateDirectory(strPath); 

     txtAttach.SaveAs(strPath + name); 

     DataTable oDT = (DataTable)ViewState["attachments"]; 
     DataRow oDR = oDT.NewRow(); 
     oDR["File"] = strPath + name; 
     oDR["Size"] = new FileInfo(strPath + name).Length/1000; 
     oDT.Rows.Add(oDR); 

     grdAttachments.DataSource = oDT; 
     grdAttachments.DataBind(); 

    } 

看來,呼叫正在恢復到Ticket.aspx頁面,但沒有得到到AddAttachment方法。有沒有人看到jQuery有什麼問題? 謝謝!

+0

絕對是一個asp的問題 – Hannes

+0

把成功和錯誤的方法,看看是否eror來 –

+0

如果我是正確的,你在代碼隱藏方法需要是靜態的。 –

回答

2

如果您在後面的代碼中編寫webmethod,它應該是靜態的。更改您的Web方法是這樣

public static void AddAttachment() 
{ 
    string name = txtAttach.FileName; 
    string strPath = ConfigurationManager.AppSettings["crmWorkspacesDir"].ToString() + txtTicketNum.Text + "\\"; 

    if (!Directory.Exists(strPath)) 
     Directory.CreateDirectory(strPath); 

    txtAttach.SaveAs(strPath + name); 

    DataTable oDT = (DataTable)ViewState["attachments"]; 
    DataRow oDR = oDT.NewRow(); 
    oDR["File"] = strPath + name; 
    oDR["Size"] = new FileInfo(strPath + name).Length/1000; 
    oDT.Rows.Add(oDR); 

    grdAttachments.DataSource = oDT; 
    grdAttachments.DataBind(); 

}