Khi gọi một phương thức jquery ajax, đôi khi chúng ta cần phương thức này để trả về một giá trị hoặc gán giá trị cho một biến toàn cục, nhưng chúng ta nhận thấy rằng giá trị mà chúng ta muốn không thu được sau khi chương trình được thực thi, ví dụ:
var i=0;//定义一个全局全量 $.get(url,function(data){ i=9; })//然后调用jquery的一个函数 alert(i);//得到的是0而不是9
Dữ liệu trong dữ liệu được lấy không đồng bộ. Mã trong môi trường chung được thực thi khi trang được tải. Tại thời điểm này, quá trình thu thập dữ liệu không đồng bộ chưa được hoàn thành và không thể lấy được giá trị.
Giải pháp:
var i=0; $.ajax({ url:url, success:function(){ i=9; }, async:false }); alert(i);
Hoặc thêm nó trực tiếp trước $.get()
$.ajaxSettings.async = false;
Sửa đổi cấu hình mặc định.
Giá trị cài đặt mặc định của async là true. Trong trường hợp này, đó là một phương thức không đồng bộ, nghĩa là khi ajax gửi yêu cầu, trong khi chờ máy chủ quay trở lại, bộ phận lễ tân sẽ tiếp tục thực thi tập lệnh sau ajax. chặn cho đến khi máy chủ trả về kết quả chính xác. Thành công sẽ chỉ được thực thi khi thành công được thực thi, có nghĩa là hai luồng được thực thi tại thời điểm này, một luồng sau khối ajax sẽ gửi yêu cầu và tập lệnh sau khối ajax.
Tất nhiên, nếu nó được đặt thành async:false, thì lợi ích của tính không đồng bộ ajax sẽ bị mất và nó cần được xử lý khác nhau tùy theo tình huống.
HTTPS://blog.CSDN.net/JA tion_/article/details/49357307
HTTPS://wuwuwu.cn blog上.com/发-photo/fear/4424633.HTML
HTTPS://wuwuwu.basic51.net/article/45432.htm