我有一個生成XML輸出的aspx文件。 在另一頁上,我嘗試使用XMLHttpRequest打開方法來讀取從aspx文件輸出的XML。除了Chrome之外,FF,IE,Safari都可以工作。但是,如果我直接進入地址欄上的aspx頁面,就會在chrome中按預期方式生成xml。 任何幫助表示讚賞。無法加載在Chrome瀏覽器上使用XMLHttpRequest動態生成的xml
下面是ASPX代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProviderFinderXML.aspx.cs" Inherits="Pages_ProviderFinderXML" %>
<%@ OutputCache Duration="6" VaryByParam="Type" %>
.aspx的代碼背後:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.ServiceModel.Syndication;
using System.Text;
using System.Data;
public partial class Pages_ProviderFinderXML : System.Web.UI.Page
{
protected string appPath = Helper.GetApplicationPath();
private DataTable dataTable, dataTable2;
private Helper helper = new Helper();
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
float center_lat = 0, center_lng = 0;
int radius = 0;
if (Request.QueryString["lat"] != null)
center_lat = Common.ConvertToFloat(Request.QueryString["lat"].ToString());
if (Request.QueryString["lng"] != null)
center_lng = Common.ConvertToFloat(Request.QueryString["lng"].ToString());
if (Request.QueryString["radius"] != null)
radius = Common.ConvertToInt(Request.QueryString["radius"].ToString());
int categoryId = 0;
if (Request.QueryString["categoryId"] != null)
categoryId = Common.ConvertToInt(Request.QueryString["categoryId"].ToString());
Response.Buffer = false;
Response.Clear();
Response.ContentType = "application/xml";
XmlTextWriter xmlWriter = new XmlTextWriter(Response.Output);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("markers");
int perPage = 0, currentPage = 1;
dataTable = helper.DIR_GetNearbyDirectoryMembersByLatLng(center_lat, center_lng, radius, categoryId, perPage, currentPage);
if (dataTable.Select().Length > 0)
{
xmlWriter.WriteAttributeString("title", cRow["title"].ToString().Replace("'", "\\'"));
}
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
xmlWriter.Close();
base.OnInit(e);
Response.Close();
}
private string GetFullyQualifiedUrl(string url)
{
return string.Concat(Request.Url.GetLeftPart(UriPartial.Authority), ResolveUrl(url));
}
}
下面是測試頁面代碼的一部分,使調用該aspx頁面:
<script type="text/javascript">
$(document).ready(function() {
searchLocationsNear();
});
function searchLocationsNear() {
var searchUrl = 'http://localhost/integrativediagnosis2/Pages/ProviderFinderXML.aspx?lat=42.3584308&lng=-71.0597732&radius=20';
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "ProviderFinderXML.aspx?lat=42.3584308&lng=-71.0597732&radius=20", false);
xmlhttp.send();
}
</script>
問題在於生成XML的代碼。顯然,如果我們有Response.Close(); Chrome不表現出來。如果我們擺脫它的工作正常。因此,解決方案將獲得RID的Response.Close(); – user1255409 2012-04-05 18:57:18