当第一个ajax函数完成时,触发第二个ajax函数


Trigger a second ajax function when the first has completed

好的,所以我试图在第一次调用完成后启动ajax调用。我有一张有3个下拉菜单的表格。第一个菜单onload运行脚本以带回值。然后,我想将vale输入到第二个脚本中,并运行该脚本来填充第二个第三个菜单。

第二个下拉列表填充在第一个的Change上。这很管用。然后我想把这个结果输入到第三个下拉列表中。我知道我的外部查询是对的,我只是觉得ajax是错的。这是我的Ajax调用。。。。

<script type="text/javascript" charset="utf-8">
jQuery(document).ready(function() {
jQuery('#networks').trigger('change');
});


function get_cities(networks)
{
$.ajax({
   type: "POST",
   url: "select.php", 
   beforeSend:  function () {
  $("#folder").html("<option>Loading ...</option>");
    },
   data: "idnetworks="+networks +"&par="+ <?php echo $row_rs_doc['parentid']; ?>,

   success: function(msg){
     $("#folder").html(msg);
   }

   });

} 
</script>
<script type="text/javascript" charset="utf-8">
jQuery(document).ready(function() {  
jQuery('#folder').trigger('change');
});
function get_sub(folder)
{
$.ajax({
   type: "POST",
   url: "select2.php", 
   beforeSend:  function () {
  $("#subfolder").html("<option>Loading ...</option>");
    },
   data: "iddocs="+folder,

   success: function(msg){
     $("#subfolder").html(msg);
   }

   });

} 
</script> 

好的,这是的表单字段

<select name="networks" id="networks" onChange='get_cities($(this).val())'>
   <?php create(network, networkid, netname);?>
  </select>
<select name="folder" id="folder" onChange='get_sub($(this).val())'>

</select>
<select name="subfolder" id="subfolder">

</select>

KISS it。只需将第二个ajax调用放入第一个的success中即可

您可以使用延迟对象,这将允许您启动额外的操作,而不必重写现有的事件处理程序,也不需要过多地嵌套代码:

var req1 = $.ajax(...);
req1.done(function() { ... } );  // start your second request