Javascript 使用“调用C”方法;WebMethod“;“返回”;“未定义”;
首先,我知道有很多问题与此类似,但没有一个对我的特殊情况有帮助(我可能只需要澄清,我不想打开一个旧的思路) 我正在创建一个应用程序,需要在jQuery函数中调用一个C#方法。我之所以需要这样做,是因为我需要使用两个特定参数对数据库执行查询 Javascript:Javascript 使用“调用C”方法;WebMethod“;“返回”;“未定义”;,javascript,c#,jquery,ajax,webmethod,Javascript,C#,Jquery,Ajax,Webmethod,首先,我知道有很多问题与此类似,但没有一个对我的特殊情况有帮助(我可能只需要澄清,我不想打开一个旧的思路) 我正在创建一个应用程序,需要在jQuery函数中调用一个C#方法。我之所以需要这样做,是因为我需要使用两个特定参数对数据库执行查询 Javascript: $(".button").click(function(){ var dataId = $(this).attr("data-Id"); var s = PageMethods.returnStr(dataId, on
$(".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#:
返回的字符串未定义。如果我使用alert(result),我只会得到页面的语法
我还尝试使用以下方法引用c#变量: C# JavaScript:
alert('<%=s%>');
非常感谢您的任何建议 你不能按你的建议去做。Javascript在web浏览器中运行。C#在服务器上运行。您不能在浏览器中运行C#代码 使用
警报(“”)代码>之所以有效,是因为它在发送到客户端之前在服务器上进行了评估
您有两个选择:
制作一个纯Javascript函数,它可以满足您的需要
使用ASP控件中的普通web窗体事件处理程序(即按钮的OnClick方法)
向服务器回拨AJAX以执行所需操作
我看你试过3次,但做得不对。“default.aspx/returnStr”的URL没有任何意义。它不会在default.aspx.cs内自动运行returnStr
方法
你最好使用#2。这将是最简单的
更新:
另一种选择是使用asp按钮,如#2,然后在OnClick方法中使用,这将在回发完成后将Javascript注入页面。在您注入的javascript中,您可以运行代码打开弹出窗口。您不能执行您的建议。Javascript在web浏览器中运行。C#在服务器上运行。您不能在浏览器中运行C#代码
使用警报(“”)代码>之所以有效,是因为它在发送到客户端之前在服务器上进行了评估
您有两个选择:
制作一个纯Javascript函数,它可以满足您的需要
使用ASP控件中的普通web窗体事件处理程序(即按钮的OnClick方法)
向服务器回拨AJAX以执行所需操作
我看你试过3次,但做得不对。“default.aspx/returnStr”的URL没有任何意义。它不会在default.aspx.cs内自动运行returnStr
方法
你最好使用#2。这将是最简单的
更新:
另一种选择是使用asp按钮,如#2,然后在OnClick方法中使用,这将在回发完成后将Javascript注入页面。在您注入的javascript中,您可以运行代码打开弹出窗口。您如何调用C#方法?JavaScript是沙盒的,所以不可能。我不确定我是否100%理解你的意思。我调用的函数类似于tihs:var s=PageMethods.populateInstructions(dataToggle、dataId、onSuccess、onError);显示定义PageMethods
的代码。我的印象是,添加'EnablePageMethods=“true”'允许我使用'PageMethods.{C#functionName}'。我是否遗漏了一些重要信息?您的AJAX正在工作,问题在于您正在使用alert()
进行调试。改用console.log(result)
你是如何调用C#方法的?JavaScript是沙盒的,所以不可能。我不确定我是否100%理解你的意思。我调用的函数类似于tihs:var s=PageMethods.populateInstructions(dataToggle、dataId、onSuccess、onError);显示定义PageMethods
的代码。我的印象是,添加'EnablePageMethods=“true”'允许我使用'PageMethods.{C#functionName}'。我是否遗漏了一些重要信息?您的AJAX正在工作,问题在于您正在使用alert()
进行调试。使用console.log(result)
而不是问题在于,我正在创建一个动态按钮,单击该按钮时会使用弹出功能()。基于功能的方式,我不能使用按钮点击事件背后的代码。要么我需要调用C#按钮单击方法和触发弹出功能的jquery方法,要么我需要从jquery函数中引用C#。根据您的说法,AJAX可能是我的最佳选择(?)什么是returnStr
方法,它必须在服务器上运行?我需要对数据库进行查询,以获取与每个按钮匹配的结果。例如,我制作按钮1到5。然后,我的表中有第1行到第5行。我需要查询第1行中的按钮1,第2行中的按钮2等。它真的只有5个值吗?您可以在页面加载时从数据库中提取所有5个值,并将它们嵌入到javascript中,以便在单击按钮时它们已经可用。不,实际上它大于150左右。但是,如果我提取页面加载上的所有值,我仍然必须能够访问JS中的数据。我想我可以有一个C#数组,并引用它,就像问题是我正在创建一个动态按钮,单击该按钮时会使用弹出功能()。基于功能的方式,我不能使用按钮点击事件背后的代码。要么我需要调用C#按钮单击方法和触发弹出功能的jquery方法,要么我需要从jquery函数中引用C#。根据您的说法,AJAX可能是我的最佳选择(?)什么是returnStr
方法,它必须在服务器上运行?我需要对数据库进行查询,以获取与每个按钮匹配的结果。例如,我制作按钮1到5。然后,我的表中有第1行到第5行。我需要查询第1行中的按钮1,第2行中的按钮2等。它真的只有5个值吗?您可以从数据库中提取所有5个值
public static string s;
alert('<%=s%>');
$.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);
}
});