Javascript 如何在ajax调用之间传递参数
我试图在两个不同的ajax调用之间传递param,param只存在于ajax范围内,而不存在于ajax范围之外 我看到了从第一个ajax成功部分调用另一个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
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