通过ajax从客户端调用C#方法来执行C#方法

Executing a C# method by calling it from client-side by ajax

本文关键字:方法 执行 调用 ajax 客户端 通过      更新时间:2023-09-26

我正在尝试使用以下技术执行服务器端方法:

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>

但是它执行不正确,我的代码中有什么特别的错误吗?我之所以使用这种方法,是因为我想为一个小项目提供一个动态菜单,并希望在会话中存储用户在会话中选择的特定"li",这样我就可以在重定向页面中加载内容。非常感谢Adrian

您的方法中没有返回,这可能是问题所在,您的方法应该如下所示

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

我可以在您的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
...

我不确定您的代码是否正确!您已经给出了href和onclick,页面甚至可能在onclick-ajax事件完成之前就导航到about.aspx。

尝试删除href或将onclick事件放入href='javascript:storelocal()'中,然后从webmethod返回值。

在web方法中保留一个断点,看看内容是否被传递到web方法。

url和成功看起来并不好。

1-在ajax调用中,您不会将参数传递给success函数。它将由c中指定的web方法返回一些内容。您可以在数据适当性中指定数据,并将其用作传递给web方法的参数。

2-您不能使用母版页调用Web方法,它必须在您正在工作的页面中指定。aspx文件而不是主文件。页面继承自母版,但它不是母版。是一个具有母版页文件规范的页面。

尝试这个来识别错误,这是为了查看返回的

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