2013-03-15 14 views
14

enter image description herejQueryのファイルアップロードはIE 8で動作していないし、9

このコードはFFとクロームで動作します。 IE 8または9では、not nullプロパティがnullであると言う500のエラーが発生します。ここ

は、HTMLここ

<div id="upload_button_div_general" class="fileupload-buttonbar" data-url="/Upload/SomeMethod"> 
    <label class="fileinput-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button"> 
     <span class="ui-button-text"> 
      <span>Add Documents...</span> 
     </span> 
     <input id="upload_button" type="file" name="postedFiles" multiple="" /> 
    </label> 
</div> 
<div id="UploadMessage" data-bind="visible: showMessage"> 
    <span>Documents</span> 

    <ul data-bind="foreach: upload()"> 
     <li> 
      <a href="#" data-bind="click: $parent.openFile"> 
       <span data-bind="text: $data.fileName"> </span> 
      </a> 
     </li> 
    </ul> 
</div> 

コントローラの方法は

public virtual JsonResult SomeMethod(IEnumerable<HttpPostedFileBase> postedFiles, int id) 
+0

たぶん、idがアクションに渡されていませんか? – karaxuna

+0

それは壊れているものですが、これはFFとクロムでうまく動作します。 IEは500のエラーを返します。 – segFault

+0

JSデバッガを使用すると、 '.fileupload()'を呼び出すときに 'additionalParams'の値が期待どおりになっているかどうかチェックできますか? (つまり、IEとFF/Chromeで同じです) – millimoose

答えて

6

私はjquery.iframe-transport.jsをインクルードすることで動作させることができました。そして、IE8で動作するので、IE8で動作するようにdivでdata-bindを削除する必要がありました。 (私は投稿コードの上にバインドしていました)すべての提案をありがとう。

+0

私に助けてくれました、ありがとう –

1

この関数は、FFで正常に動作しているように、一方のみが存在しているJavaScriptの

function Upload(div, additionalParams, successFunc, failureFunc) { 
    $('#' + div).fileupload({ 
     dataType: 'json', 
     url: rootPath + 'Upload/SomeMethod', 
     formData: additionalParams, 
     start: function (e, data) { 
      showLoading(); 
     }, 
     stop: function (e, data) { 
      hideLoading(); 
     }, 
     add: function (e, data) { 
      data.submit(); 
     }, 
     always: function (e, data) { 
      var result = data.result; 
      if (result.HasError) { 
       failureFunc(result.Error); 
      } else { 
       successFunc(result); 
      } 
     } 
    }); 
}; 

ありますあなたがここで渡している変数がIEのためだけに定義されていない可能性があります。

IEコンソールで各変数の値を確認してください。

ヒント:IEは種類やすべてについて厳格です。例えば

:IEは、8進数として、それを前提とし、一方

parseInt(Number); 

FFとChromeは小数点値として想定しています。 したがって、parseInt(Number,10)をお勧めします。

そして、あなたは

var currentDate = new Date("March 18, 2013 11:13:00") 

はChromeとFFで良い作品が、undefinedまたはIEでinvalid Dateを示して提供する場合であっても、日付に関する。

あなたは、私はちょうどあなたがタイプ、または正しい表記を宣言するのを忘れている可能性があることをあなたに言いしようとしています上記の例では、日付そうhere

の推奨表記についての詳細を見つけることができます。

これはあなたが探していた答えではありませんが、この情報がお役に立てば幸いです。

更新:エラーが500 errorであるため、rootPath変数の値に問題がある可能性があります。

+0

私はこれを踏んで、変数dはオブジェクトで、パラメータ名と値の両方が提供されています。コールは登録されていません。それは、このフォームを提出する方法を知らないのと同じです。 – segFault

+0

@segFault IEコンソールで各変数の値をチェックしてください。それらの変数結果を他のブラウザのコンソール結果と比較することもできます。これがあなたの問題を解決すると確信しています。 –

+0

私は午前中です。 firefoxでは、オブジェクトはIEの場合と同じですが、IEの場合は配列としてオブジェクトがあり、最初のレイヤーではFFです。そのプレゼンテーションはIEにユニークなもので、オブジェクトのプロパティを表示する方法は? – segFault

-2

jQueryファイルアップロードでは、http://blueimp.github.com/jQuery-File-Upload/を使用している場合は、ブラウザサポートセクションでIE 10+が実装されているすべての機能に必要であることが明らかです。

https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support

あなたが別のプラグインを意味する場合は、ちょうど私のコメントを無視してください。

+13

アップローダーの機能はIE6 +で動作しますが、一部の特殊機能はIE10 +でしか動作しません。私はあなたがドキュメントを再読することをお勧めします。 –

0

コンテンツタイプをtext/htmlに設定してJSONとして送信するだけです。

これはすべてのブラウザで有効です。

0
  $("#txt1").fileupload({ 
      replaceFileInput: false, 
      dataType: "json",   
      datatype:"json", 
      url: "<%=Page.ResolveUrl("~/WebService/AddAttachment.ashx")%>", 
      done: function (e, data) { 
       $.each(data.result, function (index, value) { 
      //You get the response data in here from your web service 
       }) 
       $("#txt1").val(""); 
      }`enter code here` 
     }); 

これはIE8とIE9 +の両方でテストされ、正常に動作しています。 正しいdataType: "json"(またはデータ型: "json")を使用し、Webサービスメソッドの応答が正しいことも確認してください。 IEで おかげ

0

あなたはこのように、このデータ(JSON)を取得することができ、ファイルをアップロードするときには、JSONのようなデータを返す場合:

done: function (e, datos) 
{ 
try 
{ 
    //This in FF, Chrome, Safari 
    data=eval(JSON.parse(datos.result)); 
}catch (er) 
{ 
    //This in IE 
    data=eval(JSON.parse(datos.result[0].documentElement.innerText)); 
} 
関連する問題