ich die folgenden DOM-Struktur haben ..Wie serialisiert JSON eine Menge versteckter Eingabewerte (jQuery kann verwendet werden)?
<input id="WorkAssignmentID_3462" type="hidden" value="3462" name="WorkAssignmentID"/>
<input id="WorkItemID_3462" type="hidden" value="3633" name="WorkItemID"/>
<input id="EmployeeID_3462" type="hidden" value="15" name="EmployeeID"/>
<input id="AssignedBy_3462" type="hidden" value="Jonathan Erickson" name="AssignedBy"/>
<input id="AssignedDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="AssignedDate"/>
<input id="ExpirationDate_3462" type="hidden" value="" name="ExpirationDate"/>
<input id="RegisteredDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="RegisteredDate"/>
können nur sagen, die jQuery-Selektor alle diese DOM-Elemente zu erhalten, ist die folgende:
$('#assignment');
und was ich will zu tun ist ein erstellen JSON-Objekt aus diesem Satz:
var WA = {
WorkAssignmentID: '3462',
WorkItemID: '3633',
EmployeeID: '15',
AssignedBy: 'Jonathan Erickson',
AssignedDate: '8/1/2009 12:00:00 AM',
ExpirationDate: '',
RegisteredDate: '8/1/2009 12:00:00 AM',
};
was wäre der einfachste Weg, das zu tun?
Ich dachte an etwas wie das, aber es funktioniert nicht, weil ich nicht denke, dass Sie die Eigenschaft des JSON-Objekts dynamisch erstellen können ... ist es möglich, den Eigenschaftsnamen dynamisch zu erstellen?
var WA = {};
$('#assignment').each(function(idx, elem) {
$.extend(WA, {
$(elem).attr('name'): $(elem).val()
});
});
danke, ich war definitiv über-Komplizierung der Lösung haha. –
Vorsicht, hier kann 'this' explizit brechen, abhängig vom Kontext, der den obigen Code ausführt. Aus diesem Grund stellt $ .each() das Element als Argument für den Callback bereit. –
Nein, im Kontext der Callback-Funktion * ist dieses * immer das DOM-Element, da intern jQuery die Callback-Funktion Usin Call aufruft: 'callback.call (Objekt [Name], Name, Objekt [Name])', check die jede Funktionsimplementierung in jquery-1.3.2.js (Zeile 672). – CMS