当我警告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"));
我知道问题是异步请求完成之前发出的警报功能,但是我不确定如何解决此问题。任何建议都非常感激:)
好的,我是从其他帖子中弄清楚的。结果可以在成功回调中处理,也可以添加本身是回调函数的参数并将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字符串,然后将其解码为服务器-侧。
和平!:)