从jquery函数和ajax调用返回值

从jquery函数和ajax调用返回值,jquery,Jquery,我希望从jquery函数中的ajax调用返回值。我有这段代码,但它返回未定义的。非常感谢任何关于我做错了什么的帮助 $.inlDo = function(action,rec,val) { $.ajax({ type: 'POST', url: 'editFile.php?do='+action+'&record='+rec+'&val='+val, success: function(d) { return 'ok

我希望从jquery函数中的ajax调用返回值。我有这段代码,但它返回
未定义的
。非常感谢任何关于我做错了什么的帮助

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

不能使用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");
 }

不能使用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");
 }
试着这样做:

$.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响应,以便可以作为对象访问响应

$.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响应,这样您就可以作为一个对象访问响应了。问题是,这是一个异步调用<代码>警报试图显示
$.inlDo
的结果,但它不会返回您指定为回调的函数

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

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

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


更多信息:

问题在于这是一个异步调用<代码>警报试图显示
$.inlDo
的结果,但它不会返回您指定为回调的函数

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

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

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


更多信息:

我认为这与刚才问的问题无关。我认为这与刚才问的问题无关。这很有帮助。对我来说,“ok”值必须进入
editFile
。Cheers
async:false几乎总是一个非常糟糕的主意。这绝对是其中之一。这是一个快速、简单且错误的解决方法。在你对我的研究结果发表声明之前,请先查看jQuery文档:)或者提供非jQXHR的例子@greener如何获得相同的结果。干杯。@Zlatan frozenkoi的回答给出了问题的原因;约翰雷莫斯给出了解决方案。例如,这个问题已经被回答了几十次了。@lonesomeday是的,对。我提供了一个示例,其中entrie响应是“返回的”,并且您发送的实例通过其他函数/处理程序/任何东西处理响应。这家伙试图:提醒($.inlDo('del',id');我刚刚解释了如何(做那件事)!:)这很有帮助。对我来说,“ok”值必须进入
editFile
。Cheers
async:false几乎总是一个非常糟糕的主意。这绝对是其中之一。这是一个快速、简单且错误的解决方法。在你对我的研究结果发表声明之前,请先查看jQuery文档:)或者提供非jQXHR的例子@greener如何获得相同的结果。干杯。@Zlatan frozenkoi的回答给出了问题的原因;约翰雷莫斯给出了解决方案。例如,这个问题已经被回答了几十次了。@lonesomeday是的,对。我提供了一个示例,其中entrie响应是“返回的”,并且您发送的实例通过其他函数/处理程序/任何东西处理响应。这家伙试图:提醒($.inlDo('del',id');我刚刚解释了如何(做那件事)!:)