从jquery函数和ajax调用返回值

时间:2012-10-12 16:57:27

标签: jquery

我想从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调用成功,因此不太可能出现问题。

3 个答案:

答案 0 :(得分: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");
 }

答案 1 :(得分: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响应,以便您可以将响应作为对象访问

答案 2 :(得分:0)

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

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

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

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

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