jQuery ajax里面一个循环问题

前端之家收集整理的这篇文章主要介绍了jQuery ajax里面一个循环问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个js循环脚本总是在 jquery ajax函数内获得ui_item的最后一个值.如何捕捉每次迭代的正确值?
  1. for (var i = 0; i <= split_files_cb_value_holder.length - 1; i++){
  2. var split_values = split_files_cb_value_holder[i].split(':');
  3.  
  4. ui_item = split_files_cb_value_holder[i];
  5.  
  6. $.ajax({
  7. type: "POST",url: "ds/index.PHP/playlist/check_folder",data: "component_type="+$('#component_type').val()+"&value="+split_values[1],success: function(msg)
  8. {
  9. console.log(ui_item); //ALWAYS GETS THE LAST VALUE
  10. },error: function()
  11. {
  12. alert("An error occured while updating. Try again in a while");
  13. }
  14. });
  15.  
  16. }

谢谢!

解决方法

问题是匿名回调方法通过引用捕获ui_item变量.由于只有一个变量,它总是得到最后分配给变量的任何东西.

您需要将for循环的内容包含在将i作为参数的函数中,然后调用循环中的函数.每次调用wrapper函数将创建一个单独的变量,解决问题.

例如:

  1. function doCheck(i) {
  2. var split_values = split_files_cb_value_holder[i].split(':');
  3.  
  4. var ui_item = split_files_cb_value_holder[i];
  5.  
  6. $.ajax({
  7. type: "POST",success: function(msg)
  8. {
  9. console.log(ui_item); //Don't always get the last value
  10. },error: function()
  11. {
  12. alert("An error occured while updating. Try again in a while");
  13. }
  14. });
  15. }
  16.  
  17. for (var i = 0; i < split_files_cb_value_holder.length; i++)
  18. doCheck(i);

猜你在找的jQuery相关文章