2012-09-12 40 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中会尝试错误部分 –