如何从函数外部的JSONP调用返回结果?

Ade*_*del 2 javascript ajax jquery json jsonp

我有以下功能很好,我使用JSONP来克服跨域,写了一个http模块来改变内容类型,并没有在url中追加一个回调名称.

function AddSecurityCode(securityCode, token) {
var res=0;
$.ajax({ url: "http://localhost:4000/External.asmx/AddSecurityCode",
    data: { securityCode: JSON.stringify(securityCode),
        token: JSON.stringify(token)
    },
    dataType: "jsonp",
    success: function(json) {
        alert(json); //Alerts the result correctly
        res = json;
    },
    error: function() {
        alert("Hit error fn!");
    }
});
return res; //this is return before the success function? not sure.
Run Code Online (Sandbox Code Playgroud)

}

res变量是alwayes未定义.而且我不能在jsonp中使用async = false.那么如何才能将结果返回到函数外部?我肯定需要为次要的电话做这件事.

请指教,谢谢.问题是我无法在此函数之外返回结果值

Cre*_*esh 6

你根本做不到这一点.

你必须重写代码流,这样AddSecurityCode需要一个callback参数(即运行功能),你那里面调用你的成功回调:

function AddSecurityCode(securityCode, token, callback) {

    $.ajax({
        ....
        success: function(json) {
            alert(json); //Alerts the result correctly
            callback(json); // HERE BE THE CHANGE
        }
        ....
    });
}
Run Code Online (Sandbox Code Playgroud)