2010-12-16 5 views
6

In der Dokumentation von jeditable für den submitdata param (ein Parameter zusätzlichen params in der Ajax-Anfrage enthält) heißt es:Serialisieren Form in einem "hash format"

(Mixed) submitdata: Extra-Parameter bei der Übermittlung von Inhalten. Kann entweder ein Hash oder eine Funktion sein, die einen Hashwert zurückgibt.

$(".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"};  
    } 
}); 

Also muss ich in den submitData einigen params aufzunehmen, die ich von der Serialisierung einer Form wiederherzustellen:

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

so, wenn ich die submitdata bereite ich tun:

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

Das Problem ist, dass das Formular auf diese Weise serialisiert in einem Format wie folgt:

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

aber Jeditable nicht versteht es und sendet es in der Anfrage

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

ich mit serialize() Funktion versucht, aber es ist es nicht verstehen, entweder weil Jeditable erfordert so etwas wie:

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

Gibt es eine Möglichkeit, das Formular im Jeditable erforderlichen Format zu serialisieren oder eine schnelle Möglichkeit, das Format nach der Serialisierung zu ändern?

Danke.

Antwort

4

Ich kann es lösen, ein Objekt aus dem serialisierten Array zu bauen, obwohl ich nicht weiß, ob es der beste Weg wäre, dies zu tun.

2

Die von Javi gegebene Lösung kann mit den meisten Fällen übereinstimmen, außer wenn Sie Eingaben mit Namen wie "inputname [key]" haben. Sie erhalten einen JavaScript-Schlüssel {"inputname [key]": value} mit Ausnahme von {"inputname": {"key": value}}. Ich schlage vor, das jquery-Plugin jquery.serialize-hash zu verwenden.

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

Verwandte Themen