Javascript 来自WebMethod的ASPX代码隐藏调用页客户端脚本
我有一个ASPX页面,它使用javascript函数中的AJAX调用调用服务器。我需要处理通过发送到服务器的(json)数据,然后将数据从服务器返回到客户端,并使用参数调用函数 我的ajax代码Javascript 来自WebMethod的ASPX代码隐藏调用页客户端脚本,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我有一个ASPX页面,它使用javascript函数中的AJAX调用调用服务器。我需要处理通过发送到服务器的(json)数据,然后将数据从服务器返回到客户端,并使用参数调用函数 我的ajax代码 function () { var myVar= "ooooblah"; $.ajax({ type: "POST", url: "MyPage.aspx/T
function () {
var myVar= "ooooblah";
$.ajax({
type: "POST",
url: "MyPage.aspx/TestFunc",
data: "{val:'" + myVar + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess
});
}
aspx.cs背后的我的代码
[WebMethod]
public static void TestFunc(string val)
{
//process code here
Page.ClientScript.RegisterStartupScript(...); //tried using this but it don't work
}
我尝试编译时遇到的错误是:
错误CS0120非静态字段、方法或属性“Control.Page”需要对象引用
错误CS0026关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效
我需要把它放在页面加载的外部吗?
不确定如何修复此问题,您将无法从C#调用javascript函数,因为这是一个“无状态”(比方说)POST调用,并且该调用在页面上下文之外运行。该方法可以在任何其他类中,结果相同,您既不能访问控件数组,也不能访问页面属性,这就是为什么该方法是静态的 您可以做的是添加一个更复杂的响应作为OnSuccess函数的提示。因此OnSuccess函数可以检查:“嘿,如果我在响应中得到ExtraArgsForMagicFunction属性,这意味着我需要调用我的神奇函数” 论客户
<script type="text/javascript">
var myVar= "ooooblah";
$.ajax({
type: "POST",
url: "WebMethodTest.aspx/TestFunc",
data: "{val:'" + myVar + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: onSuccess
});
function onSuccess(data) {
alert(data.d.MainResponse);
if (data.d.ExtraArgsForMagicFunction) {
magicFunction(data.d.ExtraArgsForMagicFunction)
}
}
function magicFunction(args) {
alert(args[0]);
}
</script>
如果你拿到了401,看看这个
如果您想知道“为什么
d
?”请查看此信息谢谢,但我认为您不理解我的问题。。。我能够从JavaScript转换到C#(代码隐藏)。。。当我在C#中时,我遇到的问题是调用一个单独的javascript函数。。。我可以很好地取得成功,谢谢,但我能够让ajax正常工作……结果证明我没有正确格式化JSON数据
[Serializable]
public struct FuncResult
{
public string MainResponse;
public string[] ExtraArgsForMagicFunction;
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static FuncResult TestFunc(string val)
{
return new FuncResult()
{
MainResponse = val + "Response",
ExtraArgsForMagicFunction = new[] { "Some Extra Args" }
};
}