Come faccio a restituire i dati JSON utilizzando jQuery.post () per un Coldfusion 8 cfc?
-
19-09-2019 - |
Domanda
Come faccio a pubblicare un modulo utilizzando jQuery.post () per un metodo Coldfusion.cfc e restituire i dati JSON? C'è un certo modo ho bisogno di formattare i valori url o modulo per specificare il metodo di CFC per invocare da remoto? Come faccio a dire Coldfusion per restituire i dati JSON?
Ho cercato le domande jQuery / Coldfusion.cfc esistenti e sto cercando una certa chiarezza. Non riesco a trovare un esempio che mostra il processo completo a / da un CFC Coldfusion.
Modulo HTML:
<!--- Assume: jquery, jquery-ui, sample.js is loaded --->
<p><a href="#" id="openDialog">Open Dialog</a></p>
<div id="myDialog" title="My Dialog" class="dialog">
<form id="myForm">
<label for="title">Title:</label><br />
<input type="text" name="title" id="title" value="" /><br />
<label for="address">Address:</label><br />
<input type="text" name="address" id="address" value="" /><br />
<input type="submit" name="save" value="save" />
</form>
</div>
sample.js:
jQuery(function ($) {
var saveUrl = "remote.cfc?method=save"; // Is this the right way??
// Bind link to open the dialog box
$('a#openDialog').click(function() {
$('#myDialog').dialog('open');
});
// Configure jQuery UI dialog box and callback methods
// Is this right??
$("#myForm").dialog({
buttons: {
'Save': function() {
$.post(saveUrl, $("#myForm").serialize(), function(result){
alert("Result: " + result);
}, "json");
$(this).dialog('close');
},
'Cancel': function() {
$(this).dialog('close');
}
});
});
remote.cfc:
<cfcomponent>
<!--- If I set the returnFormat to JSON do I need to specify json in the post too? --->
<cffunction name="save" access="remote" returntype="string" returnFormat="JSON">
<cfargument name="title" type="string" required="yes">
<cfargument name="address" type="string" required="yes">
<cfset var result = structNew()>
<!--- Do some data manipulation or cfquery here, save to result struct --->
<cfreturn result>
</cffunction>
</cfcomponent>
* Nota, ho scoperto che avere il debug Coldfusion sarà davvero goof fino valori di ritorno CFC, quindi dovrebbe essere soppressa o disattivata.
Soluzione
Quello che devi sembra buono, dove viene colpito un errore e che cosa è l'errore? Se non c'è alcun messaggio di errore evidente, la prima cosa che vorrei fare è lanciare una dichiarazione di registro nel metodo remoto e vedere se sei chiamata sta rendendo al server. Se questo è vero e rende tutta la strada fino alla fine, poi avvisare l'oggetto che torna a callback (sembra che si sta già facendo).
Per ansdwer tua domanda specifica, remote.fc?method=methodName
è l'URL corretto e se pubblichi i dati, che dovrebbe avere il titolo, ecc quindi si dovrebbe andare bene. Pubblica di nuovo un errore se si sta ricevendo una o quale sia il valore del vostro avviso finale è.
Altri suggerimenti
Se si imposta l'returnFormat a JSON non è necessario specificare JSON nel post. returnformat = WDDX di default per ragioni di compatibilità all'indietro.
Se si vuole facilità d'uso, controllare <cfajaxproxy>
e vari CF-Ajax tag UI-componente.
Check out questa questione connessa: funzione Richiamare ColdFusion usando AJAX