1

フォーム(JSP / Struts 1.1)をシリアル化して、オブジェクトやマップ、またはjQueryの.getJSON()メソッドに必要なものに入れようとしています。これが私のjsコードです:

// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
    var formAsMap = serializeForm(formName);     
    $.getJSON(inputURL, formAsMap, onReturnFunction);
}

function serializeForm(formName)
{
    var obj = {};
    var a = $('#'+formName).serializeArray();

    $.each(a, function() {
        if (obj[this.name] !== undefined) {
            if (!obj[this.name].push) {
                obj[this.name] = [obj[this.name]];
            }
            obj[this.name].push(this.value || '');
        } else {
            obj[this.name] = this.value || '';
        }
    });

    return obj;
}

これによりjava.lang.IllegalArgumentException、バックエンドがになります(BeanUtils.populateサーブレットメソッドと関係があります)。

.getJSON()呼び出しの3つのパラメーターの2番目を次のように設定すると、正常に機能し、データはJavaバックエンドのフォームオブジェクトに表示されます。

// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
    $.getJSON(inputURL, {"vehicleKeyNum":12345,
                         "vehicleID":"12345",
                         "rand":Math.random()}, 
        onReturnFunction);
}

また、フォームからのデータを含み、同じ結果になる適切な構文で文字列を作成しようとしました。構文が間違っている可能性があります。とにかく、私の主な問題は次のとおりです。

1).getJSON()メソッドは、「リクエストとともにサーバーに送信されるマップまたは文字列」を受け入れます。2番目のパラメーターとして(http://api.jquery.com/jQuery.getJSON/を参照)

2)「地図」だと思うものを渡します

3)取得しているのですが、java.lang.IllegalArgumentExceptionここからどこに行けばいいのかわかりません

4

1 に答える 1

0

サーバーにフォームを送信する場合は、jQueryのserialize()またはserializeArray()メソッドを使用するだけです。

$.getJSON(inputURL, $(formName).serialize(), onReturnFunction); 

要素名が正しく一致している場合は、serialize/serializeArrayメソッドによって返されるデータをフォームBeanに入力する必要があります。

これがシリアル化メソッドの実用的な例です(jQuery Webサイトからコピー)

java.lang.IllegalArgumentExceptionサーブレットメソッドからのBeanUtils.populateデータは、送信されたデータとフォームBeanのデータ間のデータ型の不一致が原因です。

于 2012-06-12T18:13:32.440 に答える