2017-01-09 11 views
0

Jqueryのポストメソッドを使用していくつかのパラメータを送信しようとしています。ここにコードを書きました。 のjQuery:

$(document).on("input",".li-add input", function() { 
 
    \t var input = $("#add-purposes").val(); 
 
    \t if(input != "") { 
 
    \t \t $("#outter-d-1").load("/UniHealths/UNCManageDataDictionaryServlet?type=search #d-1", { 
 
    \t \t \t queryString:input, 
 
    \t \t \t resultUrl:"/dictionary/treatment", 
 
    \t \t \t resultSetName:"dictionary_conditions", 
 
    \t \t \t queryType:["CONDITION","SYMPTOM"] 
 
    \t \t }); 
 
    \t } else { 
 
    \t \t $("#d-1").empty(); 
 
    \t } 
 
    })
私はパラメータ名として のquerytypeを使用し、そしてそれは、アレイ内の2つの値を持って、私は、サーバーからのHttpServletRequestのメソッドのgetParameter( "のquerytype")を使用したときに、私が得ましたnullポインタ、なぜこれが起こるのですか?どのように私は同じ名前の2つの異なる値を提出できますか? jQueryの1.4のよう

+0

関連:http://stackoverflow.com/q/3061273 – BalusC

答えて

1

$.param()方法は、再帰的に現代のスクリプト言語を収容する 深いオブジェクトをシリアル化し、レール上にそのようなPHPやRubyなどの をフレームワーク。あなたはまた、配列が(最後に[]に注意してください)paramName[]としてシリアル化されることを、意味jQuery.ajaxSettings.traditional = true;

これを設定することで、世界的にこの機能 を無効にすることができます。

あなたのケースでは、サーバはqueryType[]であり、queryTypeではなくparamを受け取ります。

このjQueryの動作を変更するには、要求を送信する前に jQuery.ajaxSettings.traditional = true;を設定することができます。

しかし、注意してくださいません:jQueryの3.0のよう

を、$.param()方法は、もはやデフォルト設定とfalseになります デフォルトとして jQuery.ajaxSettings.traditionalを使用しています。

あなたはjQueryの3.xのを使用するのであれば、あなたは明示的にリクエストのsettingstraditionalオプションを設定shoud。

私が知る限り、​​関数はsettingsパラメータをサポートしていませんので、代わりに.ajax()を使用してください。

[]をparam nameに追加せずに配列をシリアル化する場合は、のパラメータにtraditional: trueを含める必要があります。

関連する問題