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

时间:2015-11-25 16:03:59

标签: javascript jquery ajax

我试图在两个不同的ajax调用之间传递param,params只存在于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);

我错过了什么?

感谢

2 个答案:

答案 0 :(得分:1)

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



function ajax_get_selected_values_for_sub_cat(successCallback) 
        {          
            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){
			successCallback(data);
                }

            });
        }

ajax_get_selected_values_for_sub_cat(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);
});




答案 1 :(得分:1)

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);
    });

http://api.jquery.com/jQuery.ajax/#jqXHR