Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Net图表-通过IE7上的jQuery获取会导致图像无法加载_Jquery_Asp.net Mvc_Internet Explorer 7_Asp.net Charts - Fatal编程技术网

Net图表-通过IE7上的jQuery获取会导致图像无法加载

Net图表-通过IE7上的jQuery获取会导致图像无法加载,jquery,asp.net-mvc,internet-explorer-7,asp.net-charts,Jquery,Asp.net Mvc,Internet Explorer 7,Asp.net Charts,我正在使用和ASP.NETMVC 我试图在页面上显示图表,用户可以更改与此图表关联的各种数据,然后按下按钮执行POST操作,然后返回新渲染的图表。这是通过jQuery刷新的,jQuery加载包含图表的局部视图 我遇到的问题是,在IE7中,我无法找到图像图标。奇怪的是,它在Firefox中运行良好 更新图表的过程: 在POST中发送新参数 应用程序更改了图表对象上的参数 控制器将图表对象发送到局部视图,局部视图将其呈现为控件 jQuery然后在这个局部视图中加载。在IE7中,我得到了“未找到图像

我正在使用和ASP.NETMVC

我试图在页面上显示图表,用户可以更改与此图表关联的各种数据,然后按下按钮执行POST操作,然后返回新渲染的图表。这是通过jQuery刷新的,jQuery加载包含图表的局部视图

我遇到的问题是,在IE7中,我无法找到图像图标。奇怪的是,它在Firefox中运行良好

更新图表的过程:

  • 在POST中发送新参数
  • 应用程序更改了图表对象上的参数
  • 控制器将图表对象发送到局部视图,局部视图将其呈现为控件
  • jQuery然后在这个局部视图中加载。在IE7中,我得到了“未找到图像”图标
以下是部分视图中用于渲染图表对象的代码:

if (Model.Chart != null)
        {
            Model.Chart.Page = this.Page;
            System.Web.UI.DataVisualization.Charting.Chart Chart1 = Model.Chart;
            using (HtmlTextWriter writer = new HtmlTextWriter(this.Response.Output))
            {
                try
                {

                    Chart1.ImageType = System.Web.UI.DataVisualization.Charting.ChartImageType.Jpeg;
                    Chart1.RenderControl(writer);
                }
                catch (Exception ex)
                {
                    writer.WriteEncodedText(ex.Message);
                }
            }
        }
干杯

加载这些图表的jQuery如下所示:

function PostWidgetDataOverride(ChartID) {
    $.ajax({
        url: "/Home/GetChart",
        type: "POST",
        dataType: "HTML",
        data: { ChartID: ChartID, SeriesID: $('.SeriesID').val(), ParameterDefaults: $('.parameterDefault').serialize(), Time: getTimeStamp() },
        success: UpdateChart
    });
}

function UpdateChart(ChartContent) {
   $("#widgetConfig").dialog("close");
   var existingChart = CheckIfWidgetIsOnPage($(ChartContent).attr("id"))

   if (existingChart !== undefined) {
       existingChart.fadeOut("slow", function() { existingChart.replaceWith(ChartContent); }).fadeIn("slow");
   }
  else {
       $(ChartContent).appendTo($("#dashboardArea")).fadeIn("slow");
   }
}

我认为问题在于你如何获得图像。从您发布的代码来看,您似乎是通过ajax下载获得实际的图像数据,然后将新的图像数据插入DOM。这可能适用于Firefox,但不适用于IE(P.S也从未尝试过)。无论如何,假设IE不喜欢这样,那么最好通过image元素的source属性将图像指向图像处理程序。当您需要更改图像时,只需更改发送给handler的url中的参数,当此更改时,IE和Firefox都会请求新图像。例如:

HTML

<img src="./chart.aspx?SeriesId=456&ChartId=123&Time=20091021155300" id="chart" />

我将ImageStorageMode更改为:

Chart1.ImageStorageMode = System.Web.UI.DataVisualization.Charting.ImageStorageMode.UseImageLocation

但现在它挂在一个文件夹里。我不希望文件夹被图像堵塞…

您可以编写一个服务来清理x天以前的图像,或者您可以使用#SEQ(maxFiles,minutes)设置过期时间,但这在命名方面并不灵活。

Chart.RenderControl实际上做什么?在文件夹中创建图像并呈现指向它的html
img
标记?另外,发布jQuery函数会有所帮助。添加了jQuery。尽管这样做似乎效果不错。它生成的图像如下:我得到了一个新的局部视图,返回一块html。还包括图像标签。URL中不包含这些参数。将参数添加到对象,然后将对象发送到渲染它的视图。然后我插入HTML。你能提供更多关于RenderType的信息吗?这个设定是什么?另外,ImageStorageMode设置为什么?RenderType设置为:ImageTag | ImageStorageMode为:UseHttpHandler返回数据时,您是否可以提醒图表内容,然后在IE 7中查看是否直接转到源中指定的URL?
Chart1.ImageStorageMode = System.Web.UI.DataVisualization.Charting.ImageStorageMode.UseImageLocation