我在网络服务器(Intranet)无法访问网络的地方工作。我必须通过XML或JSON feed访问另一个部门的数据。
我目前可以使用JavaScript执行此操作,因为客户确实可以访问Internet。它是一个黑客,我对此不满意,因为我对JavaScript很糟糕,宁愿在代码后面工作。
以下代码当前有效,但我宁愿加载页面,AJAX抓住XML,然后将数据发送到后面的代码,然后我可以喂食中继器或操纵代码。任何见解都会有所帮助。
谢谢。
当前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
}
});
}
最直接的方法是使用ASP.NET WebMethod。WebMethod是ASP.NET的一部分,它将让您对页面进行AJAX调用。对于您是否希望该方法可以访问会话数据(是否),请注意。这里有一些整洁的演示代码:
http://www.aspsnippets.com/articles/calling-aspnet-webmethod-using-using-jquery-ajax.aspx
附录
如果您必须与页面控件进行交互,则可以:
- 在JavaScript中,将数据序列化为字符串
- 在JavaScript中,将数据数据塞入与Hidden Field相对应的元素
- 在JavaScript中,触发后备
-
在您的代码范围内,从隐藏的场外对您的数据进行启用,修改您的中继器,然后让ASP.NET返回结果正常
这是屁股的痛苦,但会起作用。