首先,我知道有很多与此类似的问题,但是在我的特定情况下它们都没有帮助(很可能我只需要澄清一下,并且我不想打开旧的线程)。
我正在创建一个应用程序,我需要在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时,我无法修改。
我尝试过的最后一件事是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);
}
});
任何建议都非常感谢!
参考方案
你不能做你想做的。 Javascript在Web浏览器中运行。 C#在服务器上运行。您无法在浏览器中运行C#代码。
使用alert('<%=s%>');
之所以有效,是因为在发送给客户端之前先在服务器上对其进行评估。
您有两种选择:
编写一个满足您需要的纯Javascript函数。
使用ASP控件中的常规Web表单事件处理程序(即按钮的OnClick方法)。
拨打AJAX回服务器,以完成您需要的操作。
我看到您尝试了#3,但是您没有正确执行。 “ default.aspx / returnStr”处的URL毫无意义。它不会自动运行default.aspx.cs中的returnStr
方法。
您最好使用#2。这将是最简单的。
更新:
另一个选择是使用asp Button(如#2),然后在OnClick方法中使用ClientScript.RegisterStartupScript,它将在回发完成后将Javascript注入页面。在注入的JavaScript中,您可以运行代码以打开弹出窗口。
好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…
Javascript-Urls的奇怪字符串比较行为 - javascript最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com/…
ajax:从json数组中提取json对象 - javascriptJSON(来自api的内部数组):[{"id":"001", "name":"john", "age":"40"}, {"id":"002", "name":"jane&…
Javascript-从当前网址中删除查询字符串 - javascript单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…
AJAX SQL更新不起作用 - javascript我精简了代码,使这个问题更简单了。这是文件顶部的PHP。if (isset($_POST['action'])) { $field = $_POST['db_field']; $value = $_POST['db_value']; $fields=array('points'=…