Ho un CFC esistente che funziona correttamente quando si passano strutture nel metodo.Come passare STRUCT - OR - JSON al metodo CFC Coldfusion
Il problema è che ora dobbiamo anche trasferire i dati nella stessa funzione tramite JSON.
Ecco il frammento di CFC:
<cffunction
name="subscribeAPI"
access="remote"
returntype="struct"
returnformat="json"
output="false">
<cfargument
name="structure"
type="struct"
required="true"
hint="data structure received from call">
<cfif StructKeyExists(arguments.structure, "listID")
AND len(arguments.structure.listID)>
...
</cfif>
<cfreturn LOCAL />
Ecco come si passa nella struttura:
<cfset preStruct = {
apiAction="Create",
listID="1463",
email="#form.cartEmail#",
firstname="#form.first_name#",
preCart="#now()#",
planDescription="#application.name.site#"
}
/>
<cfscript>voidReturn = application.goxObj.subscribeAPI(preStruct);</cfscript>
Ora, abbiamo anche bisogno di passare nel seguente, ma sono ovviamente ottenere errori dovuti al CFC in attesa di una struttura:
function HandleSubscribe(){
$j.getJSON(
"/com/list.cfc?wsdl",
{
method : "subscribeAPI",
action : "Create",
listID : $j("#listID").val(),
triggerKey : $j("#triggerKey").val(),
email : $j("#emailNL").val(),
firstname : $j("#firstnameNL").val()
},
handleSubscribeCallback
);
}
Come possiamo passare con successo nello snippet getJSON?
Grazie.
Non sto ospitando il servizio API. Solo effettuando una chiamata a un'API remota. –
Se utilizzo questo metodo, vedo che hai modificato il cfargument in una stringa di testo. Questo non spezzerà la mia altra chiamata che passa in una struttura? –
Sì, ma non dovresti chiamare il livello API dall'interno dell'applicazione. Dovresti chiamare direttamente il livello di servizio e il metodo createSubscription. Questo metodo ti consente di passare una struttura come una raccolta di argomenti. –