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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top