0

我正在寻找从 jquery 函数内部的 ajax 调用返回值。我有这个代码,但它返回undefined。非常感谢任何关于我做错了什么的帮助。

$.inlDo = function(action,rec,val) {
    $.ajax({
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
            return 'ok';
        }
    });
}

alert($.inlDo('del',id,''));

ajax 调用是成功的,所以这不太可能是问题。

4

3 回答 3

2

您不能使用 ajax 调用返回值

$.inlDo = function(action,rec,val) {
    $.ajax({
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
          alert(d);
       //i will suggest you to add a function call back
         compltedRequest(d);
        }
    });
}

function completdRequest(data)
 {
  alert("request has been completed");
 }
于 2012-10-12T16:59:53.127 回答
1

试试这样:

$.inlDo = function(action,rec,val) {
    return $.ajax({
        async: false,
        type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val,
        success: function(d) {
            return 'ok';
        }
    }).responseText;
}

如果您正在接收 XML 或 JSON 响应,您应该使用一些 XML 解析器,或 JSONIFY 用于 JSON 响应,以便您可以将响应作为对象访问

于 2012-10-12T17:00:18.553 回答
0

问题是这是一个异步调用。alert正在尝试显示 的结果$.inlDo,但它不返回您指定为回调的函数。

$.inlDo函数不阻塞地返回,即它不等待ajax 调用完成然后继续执行。ajax 调用可以在返回后(甚至一段时间后)完成$.inlDo

然后发生的情况是,success一旦从服务器返回数据(即 ajax 调用完成),就会执行回调。在此回调中,您必须处理结果。此功能应该执行alert(如@Zlatan 建议)或更新网页等。

如果您希望调用阻塞,即等到响应返回,则使用async: false配置。何时可以使用同步(阻塞)调用存在一些限制。

更多信息:http ://api.jquery.com/jQuery.ajax/

于 2012-10-12T17:12:47.757 回答