1

コントローラーからbase64でエンコードされた画像を取得し、新しいウィンドウに画像を表示する機能があります。Chromeでは完全に機能していますが、Firefoxでは「整形式ではありません」および「リクエストメソッド「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オブジェクトとして解釈されているという事実までエラーを追跡しました。バックスラッシュが含まれているという事実は、「整形式ではない」エラーを引き起こしています。私の質問は今です:Firefoxで$.postまたは$.ajaxを取得して文字列を返すにはどうすればよいですか(Chromeではすでにそうしています)。

4

2 に答える 2

0

未回答の質問を残さないために...

新しいウィンドウを生成するのではなく、ライトボックスを使用して画像を表示することになりました。

于 2012-09-10T15:02:25.893 に答える
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 に答える