2011-07-09 3 views
0

私は、提出のエラーを取得jQueryのフォームプラグインhttps://raw.github.com/malsup/form/master/jquery.form.js のこのバージョンを使用しています:ライン上のjQueryのフォームのアップロードエラー

エラーform.submit();

SCRIPT87: Invalid argument. jquery.form.js, line 347 character 5 

マイコード:

<form id="ajaxUploadForm" action="@Url.Action("Upload", "Home")%>" method="post" enctype="multipart/form-data" > 
    <fieldset> 
     <legend>Upload a file</legend> 
     <label>File to Upload: <input type="file" name="file" /></label> 
     <input id="ajaxUploadButton" type="submit" value="Upload" /> 
    </fieldset> 
</form> 

$(function() { 
     $("#ajaxUploadForm").ajaxForm({ 
      iframe: true, 
      dataType: "json", 
      beforeSubmit: function() { 
       // $("#ajaxUploadForm").block({ message: '<img src="/Content/themes/start/images/progress.gif" />' }); 
      }, 
      success: function (result) { 
       // $("#ajaxUploadForm").unblock(); 
       //$("#ajaxUploadForm").resetForm(); 
       $.growlUI(null, result.message); 
      }, 
      error: function (xhr, textStatus, errorThrown) { 
       //$("#ajaxUploadForm").unblock(); 
       //$("#ajaxUploadForm").resetForm(); 
       $.growlUI(null, 'Error uploading file'); 
      } 
     }); 
    }); 

をIサイドシンプルモデルダイアログでこのアップロードを行っています。

いくつかのアイディアがあるかもしれません。

答えて

1

あなたが投稿しているコントローラのアクションがJSONを返す場合は、文書で説明したように<textarea>タグでラップする必要があるかもしれません:

ブラウザのを使用して ファイルをアップロードすることはできませんので、 XMLHttpRequestオブジェクト、フォームプラグイン は、隠されたiframe要素を使用して、 のタスクを支援します。これは一般的な 手法ですが、固有の の制限があります。 iframe要素は で、フォームの 送信操作のターゲットとして使用されます。つまり、 サーバー応答が iframeに書き込まれます。応答 のタイプがHTMLまたはXMLの場合は問題ありませんが、応答タイプが またはJSONの場合、 文字が含まれていることが多く、 エンティティ参照を使用している場合にも同様です。 HTMLのマークアップ。 スクリプトやJSONレスポンスの課題を説明するために

、フォーム プラグインは、これらの応答は、textarea要素に を埋め込むことを可能にすると、それ は 接続詞で使用する場合、あなたが これらの応答タイプのためにそうすることをお勧めしますファイルのアップロード。ただし、 ファイルが入力されていない場合は、 リクエストで通常のXHRを使用して、 フォーム(iframeではなく)を送信します。これにより、サーバコードに の負担がかかり、 のテキストエリアを使用する場合とそうでない場合は、 となります。必要に応じて、プラグインの iframeオプションを使用して、 に常にiframeモードを使用し、 を指定すると、サーバーはいつでも レスポンスをテキストエリアに埋め込むことができます。

+0

問題は、送信は、私はブレークポイントを入れて、デバッグの下にそれをチェックしていない、送信していない、また、要求が別の場所に移動しないことを確認するために、何らかの理由で提出が失敗しただけです。うーん...私のコントローラでレスポンスをラップしたところで、 – Joper

+0

@ Joper、うーん、それは変だ。これを普通の形式でしようとしましたか(いくつかのjqueryダイアログではありません)? –

+0

Mozillaの別のブラウザ(Mozilla最新)をリクエストしています(これはfidderで見ることができますが、デバッグではそのリクエストがコントローラに送られているのを見ることができませんでしたが) 'ReadResponse()この要求に対する応答を返します。 Opera最新版とIE最新版 – Joper

関連する問題