I'm trying to pass back the results of an Ajax request to the triggering function. But my response is "lost on the way"...
This is what I'm doing:
some = function (){
// inside some function - this will call getItems()
content = $.parseJSON( dynoData[ dyn.method ]() );
};
...
dynoData = {
getItems : function(){
var form = "",
service = "../services/pull_items.cfc",
method = "process",
returnformat = "JSON",
targetUrl = "",
formdata = "form=getItems&method="+method+"&returnformat="+returnformat,
successHandler = function(objResponse) {
// here is the objResponse I need to pass back
console.log( objResponse );
return ( objResponse );
};
ajaxFormSubmit( form,
service,
formdata,
targetUrl,
successHandler,
"yes",
"",
returnformat,
"" );
}
ajaxFormSubmit = function ( form,
service,
formdata,
targetUrl,
successHandler,
dataHandler,
errorHandler,
returnformat,
type ){
$.ajax({
async: false,
type: type == "" ? "get" : type,
url: service,
data: formdata,
dataType: returnformat,
success: function( objResponse ){
if (objResponse.SUCCESS == true ||
typeof objResponse == "string" ){
dataHandler == "yes" ?
successHandler( objResponse ) : successHandler();
}
},
error: function () {}
});
}
Everything works correctly, but I don't know how to pass back objRespone
from the Ajax successhandler via the getItems function to the call function.
Question:
Can anyone give me a hint?
Thanks!
EDIT:
Works like this:
// inside some function
var content,
cbk = function(objResponse){
content = objResponse;
};
// get dynamic data
$.parseJSON( dynoData[ dyn.method ](cbk) );
console.log( content );
}
// inside getItems
getRetailers : function(cbk){
...
successHandler = function(objResponse, cbk) {
cbk( objResponse );
};
ajaxFormSubmit( form, service, formdata, targetUrl, successHandler, "yes", "", returnformat, cbk )
}
So I'm hijqcking my last parameter to pass cbk
instead of get/post
var ajaxFormSubmit =
function ( form, service, formdata, targetUrl, successHandler, dataHandler, errorHandler, returnformat, type ){
// cleanup
var override = null;
if ( type !== "" && type !== "post" ){
override = type;
type = "get";
}
... inside AJAX Successhandler
dataHandler == "yes" ? successHandler( objResponse, override ) : successHandler( override )
So, if get/post are passed, override will be null. Seems to work fine.