查看以下示例:
var data = "abc";
$.post(ajaxurl,data,function(results) {
console.log(data);
console.log(results)
} ,'JSON');
data = "ghi";
结果:
数据:" ghi"
结果:"结果"
传递数据:
var data = "abc";
$.post(ajaxurl,data,function(results) {
console.log(data);
console.log(results)
} (data) ,'JSON');
data = "ghi";
结果:
数据:" abc"
结果:" abc"
但是我想要实现的是传递局部变量data
但是仍然从回调中接收传递的变量。
期望的输出:
数据:" abc"
结果:"结果"
在PHP中,这将是:
function abc($result) use ($data) {
//...
}
我该如何实现这种行为?
编辑 - 澄清:我想将本地变量的当前状态传递给带参数的异步请求回调。
答案 0 :(得分:1)
根据评论中的对话,你想要这个:
SELECT a.a_id, a.variable1, a.variable2 FROM b
LEFT JOIN a ON a.a_id = b.a_id
LEFT JOIN c ON c.c_id = b.c_id
WHERE a.variable1 IN ('1', '4');
即使异步操作稍后完成,这也会将“数据”记录到控制台而不是“foo”。
答案 1 :(得分:1)
您可以使用IIFE围绕整个请求创建一个闭包。假设data
是原始值。如果它是数组或对象,您需要复制它或使用promise回调来更改它,因为数组和对象是通过引用传递而不是值
var data = "abc";
(function(data){
$.post(ajaxurl,data,function(results) {
console.log(data); // abc
console.log(results)
} ,'JSON');
})(data);
data = "ghi";