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