使用AJAX读取XML(或JSON)提要,如何将数据传递给我的代码,以便我可以使用它?

时间:2016-12-01 20:55:14

标签: jquery asp.net ajax

我在网络服务器(内部网)无法访问互联网的地方工作。我必须通过XML或JSON提要访问其他部门的数据。

我目前能够使用JavaScript执行此操作,因为客户端可以访问Internet。它是一个黑客,我对它不满意,因为我对JavaScript很糟糕,宁愿在代码背后工作。

以下代码目前有效但我宁愿页面加载,Ajax抓取XML并将数据发送到后面的代码,然后我可以提供Repeater或操作代码。任何见解都会有所帮助。

谢谢。

当前的Ajax

<div id='loadingmessage' style='display:none'>
   <img src='/js/newsdesk/loader.gif' class="ajax-loader" />
</div>

<ul id="army"></ul>
<script src="/js/newsdesk/dynamic-newsdesk.js"></script>
<script>

    $(document).ready(function () {
        displayContent('/js/newsdesk/army.xml', 'army');
    } );

我的.js文件

function displayContent(url, tag) {
$('#loadingmessage').show();  // show the loading message.
$.ajax({
    type: 'GET',
    url: url,
    data: {
        key: "value"
    },
    dataType: "xml",
    success: function (xml) {

        var totalCount = $(xml).find('totalCount').first().text();
        var $article = $(xml).find("article");

        if (totalCount > 0) {
            $article.each(function () {

                var title = $(this).find('title').text();

                var url = $(this).find('articleUrl').text();
                var datetime = $(this).find('publicationDate').text();
                var publicationName = $(this).find('publication > name').text();

                $("#" + tag).append('<li><a href=' + url + ' target=_blank>' + title + '</a><br/><p style=\"font-size: smaller;\"> <em>(' + publicationName + ') ' + datetime + '</em></p></li>');
            });
        }

        else {
            $("#" + tag).append('No articles.');
        }
        $('#loadingmessage').hide(); // hide the loading message
    }
});

}

1 个答案:

答案 0 :(得分:0)

最直接的方法是使用ASP.NET WebMethod。 WebMethod是ASP.NET的一部分,它允许您对页面进行AJAX调用。对于您是否希望方法有权访问会话数据,有不同的方法,因此请注意这一点。这里有一些简洁的演示代码:

http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

附录

如果您必须与页面控件进行交互,那么您可以:

  • 在Javascript中,将数据序列化为字符串
  • 在Javascript中,将数据填充到与HiddenField相对应的元素中
  • 在Javascript中,触发回发
  • 在您的代码隐藏中,从HiddenField反序列化您的数据,修改您的Repeater,并让ASP.NET正常返回结果

    这是一个痛苦的屁股,但它会起作用。