function getJustTimeData(queryField) {
    var value=null;
    //这里调用C#代码给value赋值。
    return value;
}
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string GetJustTimeData(string queryField)
        {
            string value = string.Empty;
            value = cpisdk.GetSnapshotValue(queryField).ToString();
            return value;
        }
js怎样写才好呢?
我下面这样写都不行呢。        function getJustTimeData(queryField) {
            PageMethods.GetJustTimeData(queryField, justTimeData);
        }
        function justTimeData(result) {
            return result;
        }
function getJustTimeData(queryField) {
    var value="<%=GetJustTimeData(queryField)%>";
    return value;
}

解决方案 »

  1.   

    后台方法加static前台用AJAX调用。  var params = '{queryField:"'+$(this).val()+'"}';        //参数,参数名要和后台方法名字一样
                    $.ajax({ 
                            type: "POST", 
                            url: "页面/方法名", 
                            data: params, 
                            dataType: "text", 
                            contentType: "application/json; charset=utf-8",                       
                            success: function(msg) {    //msg就是方法返回值
                                      //这里是请求成功做的操作
                            }, 
                            error: function(xhr, msg, e) {
                               这里是失败了
                           }
                        });
      

  2.   


    只是个javascript与C#交互,用不着Ajax吧,应该有简单方法,我在网上查,都是js访问不带参数的C#代码,应该也可以执行有参数的吧?
      

  3.   


    function getJustTimeData(queryField) {
        var value = "<%=GetJustTimeData(queryField)%>";
        return value;
    }
    这样为什么编译不能通过呢。
    编译器错误消息: CS0103: 当前上下文中不存在名称“queryField”
      

  4.   

    "<%=GetJustTimeData(queryField)%>";
    是后台的东西
    queryField是前台的变量
     你要是这么就能用的话
     你就可以直接在后台直接引用了~
      

  5.   

    其实怎么说呢~ 
    我做就是用个全局 在你的方法中改变然后用<%=全局%>
    来把值赋给前台了
      

  6.   


    <%=全局%> 在后台弄个string的全局变量么?
    那我后台代码还是需要前台的参数,这个怎么解决呢?
      

  7.   

    将scriptmangerproxy拖到aspx页面,在属性services后的按钮增加service,所增加的service的path属性要填c#代码所在的页面的path。在前台js脚本中使用ClassName.GetJustTimeData(,),前一个参数为c#函数的参数,后一个可设置为调用成功后的回调函数
      

  8.   

    真麻烦 
    用jQuery或者拖个updatepandl控件吧
      

  9.   

    LZ你还是直接找下C#前后天传参的参考看看吧  
    要解释太多了百度下 很多的 
      

  10.   

    前台:
    alert(  getJustTimeData("2"));
            function getJustTimeData(queryField) {
                var value = '<%=GetJustTimeData("'+queryField+'")%>';
                return value;
            }
    后台 加上static
    [System.Web.Services.WebMethod]
        public static string GetJustTimeData(string queryField)
        {
            string value = string.Empty;
            value = queryField+"server";
            return value;
        }
      

  11.   


    你这样写能返回2server,
    但C#代码里queryField参数为+queryField+,执行cpisdk.GetSnapshotValue(queryField).ToString();查不到结果。
      

  12.   

    哎楼主要变通下。得到结果最重要。别太执着用哪个实现。先完成进度在考虑吧,用jquery能很轻松解决问题
      

  13.   


    我没用过jquery。能否帮我写下?我的问题就像我所说的,前台调用后台程序,后台程序的方法需要前台的参数。
      

  14.   


        $.ajax({
                     url: '你的webserviceURL/你要调用的方法,//
                     contentType: 'application/json; charset=utf-8',
                     datatype: 'json',
                     type: 'POST',
                     data: '{PageId:' + pageid + '}',//参数
                     success: function (result) {//成功后执行的方法
                         binddata(result.d, pageid, statusid, servicetypeid, pageno);
                     },
                     error: function (result) {//失败执行的方法
                         alert("error:" + result.responseText);
                     }
                 });
      

  15.   

    按照上面的方法就能实现前台调用后台的方法了。不过楼主可以搜索下jquery调用webservice的帖子。因为传参数的形式可以有多种,我这种是基于json的。返回格式也是 json.
      

  16.   

    function changeValue(queryField) {
        $.ajax({
            url: 'ShowSvg.aspx/GetJustTimeData',
            contentType: 'application/json; charset=utf-8',
            datatype: 'json',
            type: 'POST',
            data: '{queryField:' + queryField + '}', //参数
            success: function (result) {//成功后执行的方法
                alert(result.responseText);
            },
            error: function (result) {//失败执行的方法
                alert("error:" + result.responseText);
            }
        });
    }//调用这样写的
    function aaa() {
        setInterval("changeValue('10hbk20cp004.xq01')", 1000);
    }弹出错误信息,无效的JSON基元:10hbk20cp004.xq01
      

  17.   

    还有我那个方式是正对webservice的后台代码。你访问的后台是.aspx的话你要把方法定义成静态的并且在方法上方加上[WebMethod]
      

  18.   

            [System.Web.Services.WebMethod]
            public static string GetJustTimeData(string queryField)
            {
                cpisdk = ConnPISdk.Instance();            if (!cpisdk.Connection())
                {
                    cpisdk.ConnectToPI();
                }            string value = cpisdk.GetSnapshotValue(queryField).ToString();            return value;
            }
      

  19.   

    这样拼接,亲自测试通过<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    string GetRandomChar(object s)
        {
            return s.ToString();
        }
        
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>前台调用后台方法</title>
        <script type="text/javascript">
            function GetJustTimeData(tt){
               var s = '<%=GetRandomChar("'+tt+'")%>';
               alert(s);
            }
        </script>
    </head>
    <body>
        <form runat="server" id="form1">
            <input type="button" onclick="GetJustTimeData('aaaaaaaa')" value="测试" />
        </form>
    </body>
    </html>
      

  20.   


    你的跟上面的有同样的问题。我修改了下就出错了。<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    string GetRandomChar(object s)
        {
            return sss(s);
        }    string sss(object s)
        {
            return (Convert.ToString(s)).Split('.')[1];
        }
        
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>前台调用后台方法</title>
        <script type="text/javascript">
            function GetJustTimeData(tt) {
                var s = '<%=GetRandomChar("' + tt + '")%>';
                alert(s);
            }
        </script>
    </head>
    <body>
        <form runat="server" id="form1">
            <input type="button" onclick="GetJustTimeData('aaa.aaa.aa')" value="测试" />
        </form>
    </body>
    </html>
      

  21.   


    function mgetData(queryField) {
        var params = '{queryField:"' + queryField + '"}';        //参数,参数名要和后台方法名字一样
        $.ajax({
            type: "POST",
            url: "ShowSvg.aspx/GetJustTimeData",
            data: params,
            dataType: "text",
            contentType: "application/json; charset=utf-8",
            success: function (result) {    //msg就是方法返回值
                //这里是请求成功做的操作
                //            alert(result);
                return result;
            },
            error: function (xhr, result, e) {
                // 这里是失败了
                alert("error:" + e);
            }
        });
    }
    我想问一下,ajax请求成功之后,我不想做一些操作,我只想返回一个值,让其他地方调用,比如我在其他方法里 var tempValue = mgetData(index);
      

  22.   

    写在success:这里做处理就好了,这里属性能接受到你后台返回的值。你还可以在这里调用你的JS方法,活着直接在success:funcation(){do some things}
      

  23.   

    我发现问题所在了,我做的功能是每秒即时显示数据,数据从PI读,就是每秒修改页面所有需要显示数据的地方的值。但我发现我写的代码最后页面显示的值都是一样的,可能是从PI得到数据过程太慢,导致循环遍历的时候赋值是同一个值。我在代码里加一个alert,然后页面显示就没问题,我应该怎么解决呢?希望高手帮帮忙。function changeValue(array) {
        var mydoc = svgDoc;
        for (var index in array) {
            mgetData(index); //获取真实的即时数据
            var tempValue = document.getElementById('justTimeData').value;
    //        alert(tempValue); //如果加上这个就会正常显示
            for (var subIndex in array[index]) {
                var tempGElement = mydoc.getElementById(array[index][subIndex]);
                if (tempGElement) {
                    for (var k = 0; k < tempGElement.childNodes.length; k++) {
                        if ("text" == tempGElement.childNodes.item(k).nodeName) {
    //                        alert(tempGElement.childNodes.item(k).firstChild.data);
                            var tempTextElement = tempGElement.childNodes.item(k).firstChild;
                            tempTextElement.data = tempValue;
                        }
                    }
                }
            }
        }
    }
    function mgetData(queryField) {
    //这个是自己写的Ajax方法
        SendRequest("GET", "JustTimeSvg.aspx?queryField=" + queryField, null, mdisplayCallback);
    }
    function mdisplayCallback(xmlHttp) {
        //alert(xmlHttp.responseText);
    //这是给一个HiddenField赋值
        document.getElementById('justTimeData').value = xmlHttp.responseText;
    }//这个是调用。
    setInterval("changeValue(elementsArray)", 1000);//elementsArray 数组 格式是elementsArray["10hag15cl901.xq01"][0]这样子的