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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top