2014-02-18 26 views
0

我想访问我函数在另一个函数上返回的布尔值。在不同的函数上访问JQuery/AJAX的返回值

$('.asset_edit').change(function(){ 
     var asset_id=$(this).attr('id'); 
     var asset=$("#"+asset_id).val(); 

     var dataString = "device="+device+"&asset="+asset; 

     $.ajax({ 
      type: "POST", 
      url: "<?php echo site_url('c_device/check_assetCode'); ?>", 
      data: dataString, 
      cache: false, 
      success: function(html){ 
       if(html) 
        return true; 
       else 
        return false; 
      } 
     }); 
    }); 

有没有一种方法,我可以访问 “返回true或返回false” 我 $( “edit_tr”)。点击(函数()功能?

在Javascript中你只需调用某些函数的名称,但在jQuery的,我不知道如何

+1

啊,这个问题每天要问100次。由于您使用的Ajax调用是异步的,因此无法完成。 – epascarello

+0

您可以异步更改变量,当成功事件被触发时,变量将被更改。 – user1477388

+0

您可以看到我的回答和示例 –

回答

1

您可以使用全局变量。

var global_status; 
$('.asset_edit').change(function(){ 
     var asset_id=$(this).attr('id'); 
     var asset=$("#"+asset_id).val(); 

     var dataString = "device="+device+"&asset="+asset; 

     $.ajax({ 
      type: "POST", 
      url: "<?php echo site_url('c_device/check_assetCode'); ?>", 
      data: dataString, 
      cache: false, 
      success: function(html){ 
       if(html) { 
        global_status="true"; 
        return true; 
       } 
       else { 
        global_status="false"; 
        return false; 
       } 
      } 
     }); 
    }); 

$(".edit_tr").click(function() { 
    alert(global_status); 
}) 

这里是一个工作演示:http://jsfiddle.net/vWkjr/1/

测试时,首先点击编辑并查看未定义,然后从selectbox中选择值,然后单击编辑。

+0

但首先,您需要触发更改事件。首先触发并设置global_status。 –

+0

-1所有者,您可以请您的理由来downvote? –

+0

这是正确的方法,但我会建议在点击事件中进行一些验证。也许检查是否设置了值,如果没有提示“等待Ajax完成,请稍后再试” – musefan

1

使用返回值insted你可以添加一个类指定html或不自己的元素。或者你可以声明一个全局变量并赋值给它。

$('.asset_edit').change(function(){ 
    var asset_id=$(this).attr('id'); 
    var asset=$("#"+asset_id).val(); 

    var dataString = "device="+device+"&asset="+asset; 

    $.ajax({ 
     type: "POST", 
     url: "<?php echo site_url('c_device/check_assetCode'); ?>", 
     data: dataString, 
     cache: false, 
     success: function(html){ 
      if(html) 
       $(this).addClass('ishtml'); 
      else 
       $(this).addClass('nothtml'); 
     } 
    }); 
}); 

这个类可以在其他函数中访问。像

function somefunction(){ 
    if($('.asset_edit .ishtml ').length){ 
      //true then do something 
     }else{ 
      //false then do something 
     } 
} 
+0

如果您提供了一个示例解决方案以及你的理论。这将会产生更完整和有用的答案 – musefan