Javascript 如何将对象从ajax成功处理程序传回调用函数?

Javascript 如何将对象从ajax成功处理程序传回调用函数?,javascript,jquery,ajax,object,return,Javascript,Jquery,Ajax,Object,Return,我试图将Ajax请求的结果传回触发函数。但我的回答是“迷失在路上” 这就是我正在做的: some = function (){ // inside some function - this will call getItems() content = $.parseJSON( dynoData[ dyn.method ]() ); }; ... dynoData = { getItems : function(){ var form = "",

我试图将Ajax请求的结果传回触发函数。但我的回答是“迷失在路上”

这就是我正在做的:

 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 () {}
    });
}
一切正常,但我不知道如何通过getItems函数将Ajax successhandler中的
objRespone
传递回call函数

问题:
谁能给我一个提示吗

谢谢

编辑:
工作原理如下:

// 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 )
}
因此,我正在hijqcking我的最后一个参数,以通过
cbk
而不是
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 )

因此,如果传递get/post,则覆盖将为null。似乎工作正常。

因为ajax调用是异步的,所以
getItems
函数的执行将在您返回数据之前很久完成。您可以做的一件事是在调用中添加回调参数,并在ajax成功时调用它。比如:

getItems: function(cbk)
//(...)
    successHandler = function(objResponse) {
        // here is the objResponse I need to pass back
        cbk(ojbResponse);
    };
但是,您必须将
dynoData
调用更改为
getItems
以添加回调,这将完成新对象的设置


另一个解决方案是使ajax调用同步,但这会使浏览器停止运行,直到您返回数据,这会使系统无响应。

谢谢。需要是异步的。让我们试试回调。