我试图调用一个包含jQuery代码的函数。我想让这个函数返回jQuery语句的结果。它不工作,我想弄清楚为什么。
function showGetResult (name) { var scriptURL = "somefile.PHP?name=" + name; return $.get(scriptURL,{},function(data) { return data; }); } alert (showGetResult("John"));
警报显示“[object XMLHttpRequest]”。但是,如果我自己运行jQuery语句,在函数之外,它工作正常 – > $ .get(scriptURL,{},function(data){alert(data);})
解决方法
你有几个不同的错误。首先,$ .get不返回回调函数的返回值。它返回XHR对象。第二,get函数不是同步的,它是异步的,因此showGetResult可能在get完成之前返回。第三,您不能将回调内部的内容返回到外部范围。然而,您可以绑定外部范围中的一个变量,并在回调中设置它。
要获得所需的功能,您需要使用$ .ajax并将async选项设置为false。然后,您可以在外部范围中定义一个变量,并在ajax回调中分配该变量,从函数返回此变量。
function showGetResult( name ) { var result = null; var scriptUrl = "somefile.PHP?name=" + name; $.ajax({ url: scriptUrl,type: 'get',dataType: 'html',async: false,success: function(data) { result = data; } }); return result; }