0

我来自 PHP 背景,所以我习惯于使用 PHP 文件来处理我所有的 ajax 调用。

最近向我介绍了 ASP.NET 控件和一般环境。

我想知道,当应该从 JavaScript 文件调用它们时,处理 ajax 请求的正确方法是什么?

此外,如果您有比 AJAX(使用 ASP.NET)更好的选择,我希望看到您的小型实现,如果可能的话,使用它。

谢谢!盖伊

4

1 回答 1

1

我已经看到了很多 ASP.NET 的 ajax 实现......但我认为最好的是我自己的......:D

只需像这样制作一个javascript函数:

<script type="text/javascript">
    function callasync(url, id_contenedor) {
        var ajax = false;

        if (window.XMLHttpRequest) {
            //Mozilla, Safari, etc 
            ajax = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            //IE       
            try {
                ajax = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                //Versión antigua    
                try {
                    ajax = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {
                }
            }
        }
        else
            return false;

        if (id_contenedor != '') {
            document.getElementById(id_contenedor).innerHTML = "<table width='100%' height='100%'><tr><td style='text-align: center; vertical-align: center;'><a class='LabelInfo'>Whait...</a><br /><img src='Imagenes/Esperar.gif' /></td></tr></table>";
        }

        ajax.onreadystatechange = function () {
            pageload(ajax, id_contenedor);
        }

        ajax.open('GET', url, true);
        ajax.send(null);
    }

    function pageload(ajax, id_contenedor) {
        if (ajax.readyState == 4 && (ajax.status == 200 || window.location.href.indexOf("http") == -1))
            if (id_contenedor != '') {
                document.getElementById(id_contenedor).innerHTML = ajax.responseText;
                ResizeCanvas();
            }
    }
</script>

然后使用 url 和 div 的 ID 调用函数“callasync”...

callasync('mypage.aspx?QS_KEY=123', 'divId');

在 ASP.NET 代码隐藏中... 像这样覆盖 Render 方法:

protected override void Render(HtmlTextWriter writer)
{
    if (Request.QueryString["QS_KEY"] != null)
    {
        //render what you want.
    }
    else
    {
        base.Render(writer);
    }
}
于 2012-12-13T15:43:50.777 回答