小编典典

函数返回Ajax响应-值未定义?jQuery Ajax

ajax

当我警告jsonServerResponse函数返回的值时,尽管从process.php页面返回了JSON,但其值未定义。

function jsonServerResponse(operation, JSOoptionalData) {
        JSOoptionalData = (typeof JSOoptionalData == "undefined") ? 'defaultValue' : JSOoptionalData
        var jqxhr = $.ajax({
            type: "POST",
            url: "process.php",
            data: "apicommand=" + JSOoptionalData,
            success: function (json) {
                return jQuery.parseJSON(json);
            }
        });
}

alert("Response as JS Object: "+jsonServerResponse("operation"));

我知道问题是异步请求完成之前发出的警报功能,但是我不确定如何解决此问题。任何建议都非常感激:)


阅读 285

收藏
2020-07-26

共1个答案

小编典典

好的,我是从其他帖子中弄清楚的。结果可以在成功回调中处理,也可以添加本身是回调函数的参数并将ajax请求的结果应用于回调。

function jsonServerResponse(operation, callback, JSOoptionalData) {
        JSOoptionalData = (typeof JSOoptionalData == "undefined") ? 'defaultValue' : JSOoptionalData
        jqxhr = $.ajax({
            type: "POST",
            contentType: "application/json",
            url: "process.php",
            data: "apicommand=" + operation + "&optionaldata" + JSON.stringify(JSOoptionalData),
            dataType: "json",
            success: function (json) {
                if(typeof callback === 'function') callback.apply(this, [json]);
            }
        });
}


jsonServerResponse("get_something_from_server", function(returnedJSO){
     console.log(returnedJSO.Result.Some_data);
}, "optional_data");

还有gdoron,您所询问的那一行使第三个参数成为可选参数。我听说这是一个好习惯,如果您要将一些数据传递到服务器上(但您不知道有多少变量)以添加可选参数并仅传递js对象,则将其转换为JSON字符串,然后将其解码为服务器-侧。

和平!:)

2020-07-26