Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自WebMethod的ASPX代码隐藏调用页客户端脚本_Javascript_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript 来自WebMethod的ASPX代码隐藏调用页客户端脚本

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

我有一个ASPX页面,它使用javascript函数中的AJAX调用调用服务器。我需要处理通过发送到服务器的(json)数据,然后将数据从服务器返回到客户端,并使用参数调用函数

我的ajax代码

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" }
    };
}