Ich verstehe, wie Sie das Datenattribut in JQuery aus einem HTML-Formular herausziehen, aber kann es innerhalb eines .cfc-Controllers erfolgen, an den ein Formular übergeben wird?Html-Datenattribut in Coldfusion Formularübergabe
page.cfm
<cfform action="controller.cfc" method="getData">
<cfinput name="uploadMyData" type="submit" data-primaryID="123">
</cfform>
Controller.cfc
function getData(rc){
writeDump(rc.uploadMyData.?????(primaryId)????);
}
, wenn das Datenattribut nicht sicher, in irgendeiner Weise in der Struktur gespeichert ist. Ich habe versucht, eine getMetaData auf der rc.uploadMyData, aber habe nur eine Liste von Java-Funktionen.
aktualisieren
Datenattribute werden Markup nur, dass Auswirkungen, die die interne Datenobjekt des Elements. Sie sind nicht Teil einer Formularanforderung. Sie würden auch kein Formular an eine CFC-Datei senden. Mit Ajax können Sie den Wert aus dem Datenattribut lesen und als Teil des Datenpakets der Anforderung an den Server übergeben.
So in page.cfm
<script type="text/javascript">
var otherData = $("#myForm").serialize();
function sendForm(){
var primaryID = $("#submitData").data("primaryID");
jQuery.post("urlpath/controller/",'{"id":'+''+primaryID+'}', function(dataReturn, status){
//I want to get my form and submit the other data as well to the controller
}
}
</script>
<form id="myForm" action="sendForm()">
<input name="uploadMyData" id="submitData" type="submit" data-primaryID="123">
<input name="importantThing" value="#importantVariable#" type="text">
</form>
gibt sie an den Server als Teil des Datenpakets Anforderung.
Wie würde ich sie zusammen übergeben? Ich möchte diese Formularübermittlung auf eine andere Seite umleiten, damit ich nicht sehe, wie ich den Controller nicht benutzen könnte? Die Formulardaten sollten die Datei newPage.cfc durchlaufen, um sie zu verarbeiten und für die Ausgabe auf newPage.cfm bereit zu machen. Ich benutze Framework eins, aber das ändert nicht viel.
Danke für die Hilfe, was denkst du?
Update 2
Ok, jetzt frage ich mich, warum ich zusammen eine Form sowohl mit Ajax und Coldfusion-Formular Vorlage einreichen möchte? Mir ist klar, dass das nicht getan werden sollte. Ich kann entweder
- das Formular über JQuery/Ajax ohne Neuladen der Seite, und umfassen das Datenattribut in der Post-URL und umfassen die serialisierten Formulardaten
page.cfm
<script type="text/javascript">
var otherData = $("#myForm").serialize();
function sendForm(){
var primaryID = $("#submitData").data("primaryID");
jQuery.post("controller/method/?primaryId="+primaryID+"",otherData, function(dataReturn, status){
//do stuff with dataReturn or do a javascript redirect
}
}
</script>
Controller.cfc
function method(requestContext){
//do stuff with that otherData, all stored in request context. includes the primaryID value i appended to the url
//send it back to the Page.cfm
fw.renderData("rawjson",jsonString,200,"");
}
und wenn das wieder in Ordnung war, konnte ich eine Funktion in meiner ursprünglichen Ansicht mit diesen Informationen zurückführen. Wie es auf der Seite anzeigen.
- Senden Sie das Formular traditionell, was zu einem Seiten-Reload führen würde. Fügen Sie einen versteckten Eingabetyp mit dem Wert ein, den ich übergeben möchte.
page.cfm
<cfform action="controller.method" method="getData">
<cfinput name="uploadMyData" type="submit" value="Submit Form Button">
<cfinput name="primaryID" type="hidden" value="123">
</cfform>
Controller.cfc
function method(requestContext){
//do stuff with requestContext.primaryID
//go to the view method.cfm or do a fw.redirect("new page or back to the page i came from");
}
Warum sollten wir wollen zweimal das Formular abzuschicken? mach einfach das eine oder andere.
Hmm ... wenn es Wert = "123" wäre, dann würde das funktionieren. Das Datenattribut ist mehr eine JS/HTML-Sache. Was passiert, wenn Sie den Formularbereich oder die Metadaten löschen? (fyi - wäre rc.uploadMyData - die Bezeichnung "uploadMyData" würde 123 enthalten). ' –
Datenattribute sind nur Markups, die sich auf das interne Datenobjekt des Elements auswirken. Sie sind nicht Teil einer Formularanforderung. Sie würden auch kein Formular an eine CFC-Datei senden.Mit Ajax können Sie den Wert aus dem Datenattribut lesen und als Teil des Datenpakets der Anforderung an den Server übergeben. –
Oh richtig Adrian - Sie würden den Formularumfang nicht einfach direkt an einen CFC senden. Ein Problem oben ist die Verwendung von cfform - scheint überflüssig ... nicht wirklich, was er anstrebt. –