Для этого вам вообще не нужен ajax. Если вы просто установите «download.php» как href на кнопке или, если это не ссылка, используйте:
window.location = 'download.php';
Браузер должен распознать двоичную загрузку и не загружать фактическую страницу, а просто служит для загрузки файла.
Вы можете выполнять итерацию по значениям объекта и на основе индекса нажимать объект в массиве.
const input = { 'a': 'Alpha', 'b': 'Australia', 'a_x': 'Beta', 'b_y': 'Canada', 'a_3': 'Charlie', 'b_4': 'China' },
result = Object.values(input).reduce((r,k,i) => {
i%2 == 0 ? r.push({name: k}) : r[Math.floor(i/2)].place = k;
return r;
},[]);
console.log(result);
Мы используем Object.values
для повторения значений; и Array.reduce
, чтобы создать окончательный массив, проходящий через исходные данные.
const arr = {
a: 'Alpha',
b: 'Australia',
a_x: 'Beta',
b_y: 'Canada',
a_3: 'Charlie',
b_4: 'China',
};
const finalArray = Object.values(arr).reduce((tmp, x, xi) => {
// only treat one on two
if (!(xi % 2)) return tmp;
return [
...tmp,
{
// Get the previous key value
name: arr[Object.keys(arr)[xi - 1]],
place: x,
},
];
}, []);
console.log(finalArray);