0

助けが必要です。jQuery を使用して ajax コールバックを発生させています。

function TestingCallback(controlId) {        

        if (controlId == 'drpControl') {
            var options =           {
                type: "POST",
                url: "Main.aspx",
                data: { drpControl: $(".drpControl").val() },               
                //contentType: "application/json; charset=utf-8",
                //cache: false,
                success: function (data) {
                },
                complete: function (jqXHR, status) {
                    formData = $("#form1").serialize();
                    window.location = "Main.aspx?" + formData;
                    ShowLoadingBar();
                    return false;
                }
            };
            var resp = $.ajax(options);
        }
}

そして、バックエンドは次のようにデータを取得します:

Request.Form["drpControl"]、これはうまくいきます。

しかし、この行をコールバック オプション : に追加するとすぐにcontentType: "application/json; charset=utf-8",、 の値が null になりRequest.Form["drpControl"]ます。

これを克服する方法について助けてください。

前もって感謝します

ポストバックを発生させようとしているが、すべての制御値を保持していることを追加するだけかもしれません。したがって、次の行です。

    formData = $("#form1").serialize(); 
   window.location = "Main.aspx?" + formData;

しかし、2 回目のポストバック (drpControl の変更時) のフィールド値がクリアされた後、これは IE が長いクエリ文字列に対応できないことに関係していると思います。Chrome でテストしたところ、完全に動作しましたが、IE では動作しませんでした。 IE 8で動作する必要があります。何か提案はありますか?

4

1 に答える 1

1

コンテンツタイプにこれを追加するだけです

contentType: "application/json" 

JSON のデフォルトのエンコーディングは UTF-8 であるため、JSON のエンコーディングの指定は多少冗長です。したがって、この場合、受信サーバーは、JSON を処理していることを認識して満足しているようで、エンコーディングがデフォルトで UTF-8 であると想定しているため、ヘッダーの有無にかかわらず動作します。

contentType (デフォルト: 'application/x-www-form-urlencoded; charset=UTF-8') - サーバーにデータを送信するときは、このコンテンツ タイプを使用します。デフォルトは「application/x-www-form-urlencoded; charset=UTF-8」で、ほとんどの場合はこれで問題ありません。content-type を $.ajax() に明示的に渡すと、(データが送信されなくても) 常にサーバーに送信されます。文字セットが指定されていない場合、データはサーバーのデフォルトの文字セットを使用してサーバーに送信されます。サーバー側でこれを適切にデコードする必要があります。


確かに注意してください。ただし、このようなデータを渡します

data: "{'drpControl' : " + $(".drpControl").val()+ "}",
于 2013-03-26T05:42:34.187 に答える