2012-09-12 94 views
0

我試圖使用這種技術來執行服務器端方法,從客戶端調用它執行一個C#方法:通過AJAX

的Javascript的Ajax功能

function storeLocal(brand, type) { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     data: "{brand:'" + brand + "'}", 
     url: "Jquery Site.Master/storeLocal", 
     datatype: "json", 
     success: OnSuccess(brand), 
    }); 
} 

function OnSuccess(brand) { 
    alert(brand); 
} 

C#方法:

[WebMethod] 
public static object storeLocal(string brand) 
{ 
    HttpContext.Current.Session.Add("Brand", brand); 
} 

線的代碼來執行的是:

<li> 
    <a class="strong" onclick="storeLocal('petzl','harness')" href="About.aspx">Harnesses</a> 
</li> 

但它沒有正確執行是否有任何特定的錯誤在我的代碼? reasone我使用這種方法是因爲我想有一個小項目的動態菜單,並希望在會話中存儲什麼特定的「李」用戶在會話中選擇,以便我可以在重定向頁面中加載內容。 非常感謝 阿德里安

+1

「的叫他」? C#沒有性別:) – codingbiz

+0

@codingbiz:取決於OP的母語。例如在俄羅斯未定義的性別的話是男性 – abatishchev

+0

你的'webmethod'沒有返回任何東西..? –

回答

1

。在你的方法沒有回報是可能是poblem,你的方法應該是這樣的,如下

[WebMethod] 
public static object storeLocal(string brand) 
{ 
    HttpContext.Current.Session.Add("Brand", brand); 
    return "value" +brand; 
} 
+0

在webmethod中添加Json作爲返回類型將是一件好事:[ScriptMethod(ResponseFormat = ResponseFormat.Json)] – 2012-09-12 07:36:46

0

有幾個錯誤,我可以用你的ajax要求見:

  1. url參數值不是正確的URL。
  2. 您沒有正確指定您的OnSuccess方法。

嘗試將其更改爲:

function storeLocal(brand, type) { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     data: "{brand:'" + brand + "'}", 
     url: "ProperSiteUrl/storeLocal", 
     datatype: "json", 
     success: OnSuccess, 
    }); 
} 

而且你是不是從你的storeLocal Web方法返回任何東西。嘗試將其更改爲:

[WebMethod] 
public static object storeLocal(string brand) 
{ 
    HttpContext.Current.Session.Add("Brand", brand); 
    return ...; 
} 

另外,你的JSON發送到服務器,但是,對於一個單一的參數它,你可能會發現更容易只是把它發送鍵/值對例如

... 
data: "brand=" + brand 
... 
0

我不確定您的代碼是否正確!您已經提供了href和onclick,甚至在onclick ajax事件完成之前,頁面可能會導航到about.aspx。

嘗試刪除href或將href ='javascript:storelocal()'中的onclick事件並從webmethod返回值。

在webmethod中保留斷點並查看內容是否傳遞給web方法。

0

網址和成功看起來不錯。

1 - 在ajax調用中,您不會將參數傳遞給成功函數。它將通過c#中指定的webmethod返回。 您指定數據中的數據,並將其用作傳遞給webmethod的參數。

2 - 您無法使用您的母版頁調用webmethod,必須在您正在工作的頁面中指定它。 aspx文件不是主人。 頁面從主站點繼承,但它不是主站點。是具有主頁面文件的規範的頁面。

試試這個識別錯誤,這對於看到的是返回

error: function (error) { 
    alert(JSON.stringify(error)); 
} 
+0

它的原因是因爲使用webmethod在masterpage中會嘗試錯誤部分 –