我想从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调用成功,因此不太可能出现问题。
答案 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
配置。何时可以使用同步(阻塞)调用存在一些限制。