6

submitdata パラメータ (ajax リクエストにいくつかの追加パラメータを含めるためのパラメータ) のjeditableのドキュメントでは、次のように述べられています。

(混合) submitdata: コンテンツを送信するときの追加パラメーター。ハッシュまたはハッシュを返す関数のいずれかです。

 $(".editable").editable("http://www.example.com/save.php";,
     {    
         submitdata : {foo: "bar"}; 
 });

 $(".editable").editable("http://www.example.com/save.php";,
     {    
         submitdata : function(value, settings) {
             return {foo: "bar"};    
     } 
 });

したがって、フォームのシリアル化から回復するいくつかのパラメーターを submitData に含める必要があります。

<form id="myForm">
     <input type="hidden" name="param1" value="myValue1"/>
     <input type="hidden" name="param2" value="myValue2"/>
</form>

したがって、submitdata を準備するときは、次のようにします。

submitdata : function(value, settings){
    return $("#myForm").serializeArray();
}

問題は、この方法でフォームをシリアル化すると、次のような形式になることです。

[Object { name="param1", value="myValue1"}, Object { name="param2", value="myValue2"}]

しかし、jeditableはそれを理解せず、リクエストを送信します

0[name] param1
0[value]    myValue1
1[name] param2
1[value]    myValue2

serialize() 関数を試してみましたが、Jeditable には次のようなものが必要なため、理解できません。

{param1: "value1" , param2: "value2"}

フォームを jeditable の必要な形式でシリアル化する方法、またはシリアル化後に形式を変更する簡単な方法はありますか?

ありがとう。

4

2 に答える 2

6

シリアル化された配列からオブジェクトを構築することで解決できますが、これが最善の方法であるかどうかはわかりません。

submitdata : function(value, settings){
    var reformat = function(array){
        var obj = {};
        for(i=0; i<array.length; i++){
            var a = array[i];
            var name = a.name;
            var value = a.value;
            obj[name] = value;
        }
        return obj;
    };
    return reformat($("#myForm").serializeArray());
}
于 2010-12-16T10:06:32.447 に答える
3

「inputname[key]」のような名前の入力がある場合を除いて、Javi が提供するソリューションはほとんどの場合に一致します。{"inputname": {"key": value} } 以外の JavaScript キー {"inputname[key]": value} を取得します。jquery プラグイン jquery.serialize-hash を使用することをお勧めします。

https://github.com/sdrdis/jquery.serialize-hash

于 2012-05-15T08:31:30.203 に答える