2011-01-18 28 views
1

ユーザーが互換モードの有無にかかわらずIE8からmyを送信すると、フォームはAJAX呼び出しを行いますが、POSTデータは送信されません。以下は私のjQuery.validateとjQuery.formコードです:jquery.form&jquery.validate:IEで送信されたPOSTデータがありません

ResponseHeaders 
Date Mon, 17 Jan 2011 13:56:25 GMT 
Server Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch mod_perl/2.0.2 Perl/v5.8.8 
X-Powered-By PHP/5.2.4-2ubuntu5.12 
Keep-Alive timeout=15, max=100 
Connection Keep-Alive 
Transfer-Encoding chunked 
Content-Type text/html 

RequestHeaders 
Content-Type application/x-www-form-urlencoded 
X-Requested-With XMLHttpRequest 
Accept */* 

POST]タブの下には何もありません:

var v = jQuery("#enterfrm").validate({ 
     submitHandler: function(form) { 
      jQuery(form).ajaxSubmit({ 
       target: "#result", 
       success: function() { 
        $("#enterfrm").hide(); 
       } 
      }); 
     }, 
     debug: true, 
     rules: { 
      reportto: { 
       required: true 
      }, 
      jobtitle: { 
       required: true 
      }, 
      dept: { 
       required: true 
      }, 
      paystatus: { 
       required: true 
      }, 
      reason: { 
       required: true 
      }, 
      prefstartdate: { 
       required: true 
      }, 
      sthour: { 
       required: true 
      }, 
      edhour: { 
       required: true 
      }, 
      jbdescex: { 
       required: true 
      }, 
      positionchg: { 
       required: true 
      }, 
      minexp: { 
       required: true 
      }, 
      adrecreq: { 
       required: true 
      }, 
      comsug: { 
       required: false 
      }, 
      org: { 
       required: true 
      }, 
      origemail: { 
       required: true 
      }, 
      // // 
      replacing: { 
       required: function(element) { 
        return $("#reason").val() == "Replacement"; 
       } 
      }, 
      replacetitle: { 
       required: function(element) { 
        return $("#reason").val() == "Replacement"; 
       } 
      }, 
      justify: { 
       required: function(element) { 
        return $("#reason").val() == "New Position"; 
       } 
      }, 
      length: { 
       required: function(element) { 
        return $("#paystatus").val() == "Temporary - In House" || $("#paystatus").val() == "Temporary - Outside"; 
       } 
      }, 
      purpose: { 
       required: function(element) { 
        return $("#jbdescex").val() == "No" || $("#positionchg").val() == "Yes"; 
       } 
      }, 
      duties: { 
       required: function(element) { 
        return $("#jbdescex").val() == "No" || $("#positionchg").val() == "Yes"; 
       } 
      }, 
      sthour: { 
       required: true, 
       minlength: 4, 
       maxlength: 8 
       //notEqTime: true 
      }, 
      edhour: { 
       required: true, 
       minlength: 4, 
       maxlength: 8 //, 
       //notEqTime: true 
      } 
     } 
    }); 

そしてここでは、FirebugのLiteはキャプチャするものです。これはFirefox、Chrome、IEのChrome Frameでうまく動作します。問題に関しては何かを逃していますか?

EDIT これもGETリクエストで試してみましたが、これもうまくいきません。

+0

ブラウザはQuirksモードに起こっている可能性があるかを実行して、グローバル伝統的な直列化を使用することができますか? – Vadim

+0

@Yads私はIEの開発者ツールを使用して、それが不合理なモードではないことを確認しました。 – Jason

答えて

0

jQuery.Formが$.param(a)を使用してフォームをシリアル化するように見えますが、IEを取得して正常なPOSTデータを作成するだけでした。$.param(a, true)ここを参照してください。 http://api.jquery.com/jQuery.param/

あなたは$.ajaxSettings.traditional = true;

+0

代わりにGETデータを使用することをおすすめしますか? – Jason

+0

@Badger私は自分の問題を誤って忘れてしまったので、これはおそらく正しい答えではないことに気付きました。私の問題は、PostDataを正しく再初期化するためのASP.NET MVCを取得できませんでした。グローバル 'traditional'フラグを設定しようとすることはできますが、おそらく役に立ちません。 – Vadim

+0

あなたは正しいです、伝統的な旗はどんな助けもしませんでした。私もGETリクエストを試してみましたが、どちらも助けてくれませんでした。シリアライゼーションの問題は正しい方向かもしれないと私は思っています。私はちょうどAJAXのフォームの提出を放棄し、問題を解決する希望を持っています。 – Jason

関連する問題