[英]Executing a C# method by calling it from client-side by 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>
但是它执行不正确,我的代码中是否有任何特定错误? 我之所以使用这种方法,是因为我想为一个小型项目提供一个动态菜单,并希望在会话中存储用户在会话中选择的特定“ li”内容,以便我可以将内容加载到重定向页面中。 非常感谢阿德里安
您的方法中没有返回值可能是问题,您的方法应如下所示
[WebMethod]
public static object storeLocal(string brand)
{
HttpContext.Current.Session.Add("Brand", brand);
return "value" +brand;
}
我可以在您的ajax
请求中看到几个错误:
url
参数值不是正确的URL。 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()'内,然后从web方法返回值。
在web方法中保留一个断点,然后查看内容是否传递到该web方法。
网址和成功看起来并不理想。
1-在ajax调用中,您不会将参数传递给成功函数。 它会由c#中指定的web方法返回。 您可以在数据属性中指定数据,并将其用作传递给web方法的参数。
2-您无法使用母版页调用web方法,必须在您正在使用的页面中指定该方法。 aspx文件不是主文件。 该页面继承自母版,但不是母版。 是具有母版页文件规范的页面。
尝试此操作以识别错误,以查看返回的内容
error: function (error) {
alert(JSON.stringify(error));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.