1

我有一个从控制器检索 base64 编码图像并在新窗口中显示图像的函数。它在 Chrome 中运行良好,但在 Firefox 中失败,出现错误“格式不正确”和“不支持请求方法 'GET'”。我不明白为什么会出现这种情况,因为我使用的是 post,而不是 get...

相关的代码部分是:

function showPicture(label) {
$.post( 'picture-view', { labelname: label }, function(ImageSrc) {
   var img = new Image;
       img.src = "data:image/png;base64," + ImageSrc;
       img.style.position = 'fixed';
       img.style.left = '0';
       img.style.top = '0';
       img.onload = function() {        
       var newWindow = window.open("", label,"scrollbars=0, toolbar=0, width="+myImage.width+", height="+myImage.height);
                            creativeWindow.document.documentElement.innerHTML='';
                            creativeWindow.document.documentElement.appendChild(img);
      }​
});}

编辑此外,我们将不胜感激地收到任何有关可访问书籍或网站的建议,以了解有关此材料的更多信息。

编辑#2我还应该补充一点,当我尝试将 img.src 写入控制台时,它会以 [objectXMLDocument] 的形式出现。

编辑#3我已经将错误跟踪到返回的 ImageSrc 应该是一个字符串但被解释为一个 XML 对象的事实。它包含反斜杠的事实导致了“格式不正确”的错误。我现在的问题是:如何让 $.post 或 $.ajax 在 Firefox 中返回一个字符串(他们已经在 Chrome 中这样做了)。

4

2 回答 2

0

我可能会尝试.ajax改用。它还允许您提供后备内容。

与其使用 post 发送图像,不如将图像托管在您的服务器上并通过 src 加载图像。这将是一种更清洁的方法。

例如

$.ajax({

    type: "POST",
    data: "",
    url: yourURL,
    error: function() {
      //The call was unsuccessful
      //Place fallback content/message here
    },
    success: function(data) {
      //The call was successful

      //Open new window
      var newWindow = window.open("", label,"scrollbars=0, toolbar=0, width="+myImage.width+", height="+myImage.height);
      creativeWindow.document.documentElement.innerHTML='';

      //Create the image 
      var image = document.createElement("img");
      image.src = data;

      //Attach image to new window
      creativeWindow.document.documentElement.appendChild(image);

    }

});
于 2012-07-17T12:51:34.507 回答
0

为了不留下未回答的问题...

我最终使用灯箱来显示图像,而不是生成新窗口。

于 2012-09-10T15:02:25.893 回答