【发布时间】:2011-10-24 22:51:23
【问题描述】:
我遇到了 $.post 的变量范围问题之一。在提交表单之前,我想先检查用户是否编辑了内容。如果用户没有,我返回 false。
我在 Stackoverflow 上查看了一堆不同的示例,执行此操作的一般方法是在该函数内创建一个函数和一个回调函数来处理回调。我的问题是,当我在下面调用 getReturned 时,回调没有实现(知道这一点,因为表单被提交并且我已经尝试了警报)。顺便说一句,alert("No changes were made so text was not submitted."); 被成功调用。
我做错了什么?
function getReturn(callback, id, old_variable){
var return_value = "ERROR";
$.post('myURL', {"id" : id},
function(data) {
var text_from_server = $.trim(data[0].note_text);
if (old_variable == text_from_server){
alert("No changes were made so text was not submitted.");
return_value = false;
callback(return_value);
} else {
return_value = true;
callback(return_value);
}
},
"json"
);
};
var id = 123;
var old_variable = "foo";
getReturn(
function(return_value){return return_value;/*alert("SUCCESS!");*/},
id,
old_variable
);
【问题讨论】:
-
你在callback里面测试alert的时候,return语句之前有alert吗? @Ariel 似乎是对的,但仍应调用回调。
标签: javascript jquery ajax scope