代码之家  ›  专栏  ›  技术社区  ›  Sun

Intersystems缓存-使用缓存服务器页面(Intersystems)通过javascript调用ASHX

  •  1
  • Sun  · 技术社区  · 11 年前

    我正在使用缓存服务器页面(Intersystems),并试图通过javascript调用ASHX,但它不起作用。

    如何在缓存服务器页面中调用用c#编写的ashx?

    我试着用下面的方法。

    系统间缓存

        Class ArithematicMean.MeanPage Extends %CSP.Page
    {
    
    ClassMethod OnPage() As %Status
    {
        &html<<html id="arithematicmean">
    <head>
    
    <script type="text/javascript" src="external_javascript.js"></script>
    <script type="text/javascript" src="MeanCalculation.js"></script>
    
    </head>
    
    <body>
    
    <script language='javascript'>
    function mean(array)
    {
     var Mean = 0, N = 0, MeanPrev = 0, Sum=0, p;  
     for(var i = 0; i < array.length; i++) 
     {
       ++N;
    
       p = parseFloat(array[i]);
       if (!isNaN(p)) Sum += p;
    
       MeanPrev = Mean;
       Mean += (array[i] - MeanPrev) / N;
     }
     alert (Sum);
     alert(Mean ? Math.round(Mean*10)/10 : 0);
    }
    
    
    var httpReq = null;
        function InstructionsImageASHX() 
        {
    
    
            httpReq = XMLHttpRequest();
    
    
            httpReq.open("GET", "InstructionsImage.ashx", true);
             alert('hi123');
             httpReq.onreadystatechange = XMLHttpRequestCompleted;
            httpReq.send(null);
    
        }
    
        // initialize XMLHttpRequest object
        function XMLHttpRequest() {
            var xmlHttp;
            try {
                // Opera 8.0+, Firefox, Safari
                xmlHttp = new XMLHttpRequest();
            }
            catch (e) {
                // IEBrowsers
                try {
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                        return false;
                    }
                }
            }
            return xmlHttp;
        }
    
        function XMLHttpRequestCompleted()
        {
            if (httpReq.readyState == 4)
            {
                try
                {
                    alert(httpReq.responseText);
                }
                catch (e)
                {
                }
            }
        }
    </script>
    
    <center>
    <h1> Sum and Arithemetic Mean Calculation for 3 Numbers</h1>
    </center>
    <table cellpadding="5">
    <tr>
    <td width="20%">
    </td>
    <td  width="20%">
    <label name="lblnumone"> Value One</label>
    </td>
    <td  width="20%"> 
    <input type="text" name="txtnumone" id="txtnumone" runat="server" width="10"/>
    </td>
    </tr>
    
    <tr>
    <td width="20%">
    </td>
    <td width="20%">
    <label name="lblnumtwo"> Value Two</label>
    </td>
    <td width="20%"> 
    <input type="text" name="txtnumtwo" id="txtnumtwo"  runat="server" width="21"/>
    </td>
    </tr>
    
    <tr>
    <td width="20%">
    </td>
    <td width="20%">
    <label name="lblnumthree"> Value Three</label>
    </td>
    <td width="20%"> 
    <input type="text" name="txtnumthree" id="txtnumthree" runat="server"  width="21"/>
    
    </td>
    </tr>
    
    <tr>
    <td width="20%">
    </td>
    <td width="20%">
    <button id="btnInstructionsImage" onclick= 'InstructionsImageASHX();'>Instructions in Image</button>
    </td>
    <td width="20%"> 
    <button id="btnCalculate" onclick='alert( mean( [document.getElementById("txtnumone").value,document.getElementById("txtnumtwo").value,document.getElementById("txtnumthree").value] ) );'>Calculate Mean</button>
    </td>
    <td width="20%">
    <img src="InstructionsImage.ashx" height="100" width="200">
    </td>
    </tr>
    
    </table>
    
    </body>
    </html>>
        Quit $$$OK
    }
    
    }
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   Vlasec    11 年前

    如果我理解正确,你只想打电话 ASHX 来自客户端 JavaScript .

    如果是,那就不是了 CSP 根本没有问题。页面可以由生成 JSP PHP 结果相同 HTML 页问题可能出在你的 JavaScript语言 密码尝试上的一些教程 阿什克斯 ,或者找一些现成的 AJAX 解决方案

    既然是 CSP公司 页面,它不必是静态的。你最好用一些 Caché ObjectScript 生成重复代码并插入数据库中的一些内容的代码。例如:

    for i=1:1:3 {
        &html< 
            <tr>
                <td><label>Value no.#(i)#</label></td>
                <td><input type="text" name="value#(i)#" id="value#(i)"></td>
            </tr>
        >
    }
    

    这将生成三行 Value no.1 Value no.3 标签。

    推荐文章