Javascript 如何在ajax调用之间传递参数

Javascript 如何在ajax调用之间传递参数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图在两个不同的ajax调用之间传递param,param只存在于ajax范围内,而不存在于ajax范围之外 我看到了从第一个ajax成功部分调用另一个ajax的选项,我不想这样,他们还有其他方法吗 我的代码 jQuery.ajax({ url: '/modules/products/ajax.php', data: { prod_id: prod_id, act: 'get_selected_values_for_sub_cat' }, type: 'POST

我试图在两个不同的ajax调用之间传递param,param只存在于ajax范围内,而不存在于ajax范围之外

我看到了从第一个ajax成功部分调用另一个ajax的选项,我不想这样,他们还有其他方法吗

我的代码

jQuery.ajax({
  url: '/modules/products/ajax.php',
  data: {
    prod_id: prod_id,
    act: 'get_selected_values_for_sub_cat'
  },
  type: 'POST',
  async: false,
  dataType: 'json',
  success: function(data) {

    var res = JSON.stringify(data);
    res = jQuery.parseJSON(res);

    var selected_array = [];
    jQuery.each(res, function(key1, value1) {

      selected_array[key1] = jQuery.parseJSON(value1);
    })

  }

});

console.info("selected_array", selected_array); 
我试试这个

function ajax_get_selected_values_for_sub_cat() {
  return jQuery.ajax({
    url: '/modules/products/ajax.php',
    data: {
      prod_id: 123,
      act: 'get_selected_values_for_sub_cat'
    },
    type: 'POST',
    async: false,
    dataType: 'json',
    success: function(data) {

    }

  });
}

var re = ajax_get_selected_values_for_sub_cat();
res = JSON.stringify(re);
res = jQuery.parseJSON(res);

var selected_array = [];
jQuery.each(res, function(key1, value1) {

  selected_array[key1] = jQuery.parseJSON(value1);
})
console.info("selected_array", selected_array);
我错过了什么


谢谢

您可以使用以下回调方法-

函数ajax\u获取\u sub\u cat的\u选定值(成功回调)
{          
jQuery.ajax({
url:“/modules/products/ajax.php”,
数据:{prod_id:123,act:'get_selected_values_for_sub_cat'},
键入:“POST”,
async:false,
数据类型:“json”,
成功:功能(数据){
成功回调(数据);
}
});
}
ajax\u获取\u选择的\u值\u用于\u子\u cat(函数(re){
res=JSON.stringify(re);
res=jQuery.parseJSON(res);
所选变量_数组=[];
每个(res,函数(key1,value1){
所选的_数组[key1]=jQuery.parseJSON(value1);
})
console.info(“选定的数组”,选定的数组);

});ajax函数返回一个实现promise接口的对象。您可以这样实现它:

    function ajax_get_selected_values_for_sub_cat(id) {
      return jQuery.ajax({
        url: '/modules/products/ajax.php',
        data: {
          prod_id: id,
          act: 'get_selected_values_for_sub_cat'
        },
        type: 'POST',
        async: false,
        dataType: 'json'
      });
    }

    var promise = ajax_get_selected_values_for_sub_cat(123);
    promise.done(function(re){
        res = JSON.stringify(re);
        res = jQuery.parseJSON(res);

        var selected_array = [];
        jQuery.each(res, function(key1, value1) {

          selected_array[key1] = jQuery.parseJSON(value1);
        })
        console.info("selected_array", selected_array);
    });

您可以使用Promise实现这一点为什么不能使用临时公共变量?不,没有其他方法。在ajax完成之前,您无法启动其余的代码,因此必须涉及回调。您可以使用承诺来减少嵌套,但它仍然会涉及回调。我无法理解您的代码-第二个ajax调用在哪里,它需要什么数据?Simon H第二个调用不相关,因为它甚至没有打印console.info