-1
我们最近观察到使用jQuery ajax时的行为,并想验证它是否合理。ajax GET和POST中的变量范围
例如,假设下面的代码:
function validate(e, inurl, formid, foo) {
var v = $("#" + formid).serialize();
$.ajax({
url: inurl,
type: 'POST', // *** type here matters
data: v,
dataType: "JSON",
success: function (data) {
// *** e, inurl, formid, including v would all be undefined here
// *** however, if ajax call type is GET, those variables would be valid
// *** on the other hand, foo as a callback is preserved regardless
if (foo)
foo(data);
}
});
}
这是一个设计的行为,所以我们一定会用得到,如果我们需要保持这些变量?如果是这样,任何相关的文件将不胜感激。
找出一个简单的方法是运行它,看看它们在通话后是否仍然存在。我建议学习功能和变量范围。 –
“我们最近观察到一种行为” - 您一定误解了您所看到的内容。这不是JavaScript的工作原理。 – Quentin
你知道Ajax是异步运行!在你的成功函数中意味着你只能访问全局变量v肯定是未定义的,e inurl formid和foo将是未定义的,除非它们是全局变量而不管你使用get或post方法 – lyz