Como faço para retornar dados JSON usando jQuery.post () para um ColdFusion 8 cfc?
-
19-09-2019 - |
Pergunta
Como posso enviar um formulário usando jQuery.post () para um método e json retorno de dados Coldfusion.cfc? Existe uma certa necessidade maneira que eu formatar os valores URL ou de formulário, a fim de especificar o método de cfc para invocar remotamente? Como eu digo ColdFusion para retornar JSON dados?
Eu procurei as perguntas jQuery / Coldfusion.cfc existentes e eu estou procurando alguma clareza. Não consigo encontrar um exemplo que mostra o processo completo de / para um cfc ColdFusion.
Form 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, eu descobri que ter Coldfusion depuração vai realmente goof-se valores de retorno cfc, por isso deve ser suprimida ou desligado.
Solução
O que você tem boa aparência, onde ele bateu um erro e qual é o erro? Se não houver nenhuma mensagem de erro óbvio, a primeira coisa que eu faria é jogar uma declaração de registro no método remoto e veja se você está chamada é torná-lo para o servidor. Se isso é verdade e isso torna todo o caminho até o fim, então alertar o objeto que retorna a chamada de retorno (Parece que você já está fazendo isso).
Para ansdwer sua pergunta específica, remote.fc?method=methodName
é o URL correto e se você for dados de lançamento, que deve ter o título, etc. assim que você deve ser fino. Posto de volta um erro se você está recebendo um ou qual é o valor do seu alerta final é.
Outras dicas
Se você definir o returnFormat para JSON você não precisa especificar json no post. returnformat = WDDX por padrão por razões de compatibilidade com versões anteriores.
Se você quer facilidade de uso, veja <cfajaxproxy>
e várias marcas de UI-componente cf-ajax.
Confira esta questão relacionada: função Invoke ColdFusion usando AJAX