jquery形式の値を更新するシリアライズ

jquery
jquery形式の値を更新するシリアライズ

文字列を返す `$(”#formid “)。serialize()`を使用しているため、ajax呼び出しを行う前に、この文字列の値の1つを別の値でオーバーライドする必要があります。

`serializeArray()`を使用する必要がありますか? もしそうなら、配列値を更新した後に文字列を取得するにはどうすればよいですか?

  1  1


ベストアンサー

これが条件付きオーバーライドである場合、非表示フィールドを使用できます。 条件に基づいて、非表示フィールドにオーバーライド値または実際の値を保存します。 次に、サーバー側で、ユーザーに表示される入力フィールドではなく、非表示フィールドの値を確認します。

または、シリアル化する前にフィールドの値を変更し、 `jQuery.ajax`を呼び出した後に復元できます。

最初のオプションは私にとってよりクリーンなようです。

更新

ビューモデルを変更したくない場合は、オプション2が最も簡単な方法です。 他の方法があります:

  1. 正規表現を使用して値を置き換えます。
    serializedString.replace(/ FieldName = [^&] + /、" FieldName = "+ overridingValue);

  2. 文字列を分割し、各プロパティを調べます。 これはもっと
    時間がかかり、冗長ですが、正しいフィールドをオーバーライドしていることを確認できます:+

var nameValuePairs = serializedString.split(/&/);
var newSerializedString = "";

for(var i = 0; i < nameValuePairs.length; i++) {
    var namveValuePair = nameValuePairs[i];
    var entry = nameValuePair.split(/=/);
    var key = entry[0];

    if(key == "FieldName") {
       entry = "FieldName=" + overridingValue;
    }

    newSerializedString += entry + "&";
}

newSerializedString = newSerializedString.replaced(/&$/, "");

IMO、それは多くの作業のように思われるので、私はまだオプション2を使用します!

1


タイトルとURLをコピーしました