假设我想对服务器进行ajax调用,并使用响应替换现有文档内容的一部分。是否有理由选择其中一种方法而不是另一种?
选项1 - 进行ajax调用,并从错误/成功函数执行replaceWith。例如:
$.ajax({
type : 'GET',
url : '/some/path/here',
success : function(data) {
// process data here
$('#container').replaceWith(processedData);
}
});
选项2 - 调用replaceWith,传入一个进行ajax调用的函数。例如:
$("#container").replaceWith(function(){
var responseData;
$.ajax({
type : 'GET',
url : '/some/path/here',
success : function(data) {
// process data here
responseData = processedData; //
}
});
return responseData;
});
答案 0 :(得分:4)
第二个不是一个选择。当你取出这个功能时;
function(){
var responseData;
$.ajax({
type : 'GET',
url : '/some/path/here',
success : function(data) {
// process data here
responseData = processedData; //
}
});
return responseData;
}
这将返回undefined
。因为,当时间函数运行并返回时,reponseData
为undefined
。仅在将来的某个时间,success
函数执行并设置responseData
。但是,您的replaceWith
代码已经完成执行。
选择选项1.
答案 1 :(得分:2)
选项1是您唯一的选择,因为选项2不起作用,因为调用将异步执行。这意味着你的功能永远不会返回任何东西。
如果您希望外部处理从AJAX调用返回的数据,只需将success
参数设置为您要执行的函数的参考:
$.ajax({
type: 'GET',
url: '/some/path/here',
success: processData
});
function processData(data) {
// process data here
$('#container').replaceWith(data);
}