【发布时间】:2017-03-14 21:58:53
【问题描述】:
首先,我知道有很多与此类似的问题,但没有对我的特殊情况有帮助(我可能只需要澄清,我不需要想打开一个旧线程)。
我正在创建一个应用程序,我需要在一个 jQuery 函数中调用一个 C# 方法。我需要这样做的原因是因为我需要使用两个特定参数对数据库执行查询。
Javascript:
$(".button").click(function(){
var dataId = $(this).attr("data-Id");
var s = PageMethods.returnStr(dataId, onSuccess, onError);
function onSuccess(result){
alert(s);
}
function onError(result){
alert("error");
}
});
C#:
[WebMethod]
public static string returnStr(string Id)
{
// ... blah blah make query, return string s
return s;
}
返回的字符串未定义。如果我使用 alert(result),我只会得到页面的语法。
我还尝试使用以下方法引用 c# 变量:
C#
public static string s;
JavaScript:
alert('<%=s%>');
这可行,但是当我调用 WebMethod 时,我无法修改 s。
我尝试过的最后一件事是 ajax,但即使我根据在 SO 上找到的答案对其进行建模,我也无法让它像我希望的那样工作 - 它返回“[object Object]”:
AJAX:
$.ajax({
type: "POST",
url: "default.aspx/returnStr",
dataType: "json",
contentType: 'application/json; charset=utf-8',
error: function(result){
alert("request failed" + result)
},
success: function(result){
alert(result);
}
});
非常感谢任何建议!
【问题讨论】:
-
如何调用 C# 方法? JavaScript 是沙盒的,所以不可能。
-
我不确定我是否 100% 理解您的意思。我正在调用类似 tihs 的函数: var s = PageMethods.populateInstructions(dataToggle, dataId, onSuccess, onError);
-
显示定义
PageMethods的代码。 -
我的印象是添加 'EnablePageMethods="true"' 允许我使用 'PageMethods。{ C#函数名}'。我在这里错过了什么大事吗? -
您的 AJAX 工作正常,问题是因为您使用
alert()进行调试。请改用console.log(result)
标签: javascript c# jquery ajax webmethod