Вы неправильно используете Ajax. Идея состоит в том, чтобы не возвращать что-либо, а вместо этого передавать данные на вызов, называемый функцией обратного вызова, которая обрабатывает данные.
То есть:
function handleData( responseData ) {
// Do what you want with the data
console.log(responseData);
}
$.ajax({
url: "hi.php",
...
success: function ( data, status, XHR ) {
handleData(data);
}
});
Возвращение чего-либо в обработчике ничего не сделает. Вы должны либо передавать данные, либо делать то, что хотите, непосредственно внутри функции успеха.
Я считаю, что это чисто дизайнерское решение. Не все из них растут вниз - см. эту SO-нить для хорошего обсуждения направления роста стека на разных архитектурах.
Одно хорошее объяснение, которое я слышал, состояло в том, что некоторые машины в прошлом могли иметь только неподписанные смещения, поэтому вам нужно, чтобы стек увеличивался вниз, чтобы вы могли поразить своих местных жителей, не потеряв лишнюю инструкцию для подделки отрицательного смещения .
IIRC стек растет вниз, потому что куча растет вверх. Возможно, это было наоборот.
Одна из возможных причин может заключаться в упрощении выравнивания. Если вы поместите локальную переменную в стек, которая должна быть размещена на 4-байтной границе, вы можете просто вычесть размер объекта из указателя стека и затем обнулить два нижних бита, чтобы получить правильно выровненный адрес. Если стек растет вверх, то выравнивание становится немного сложнее.
Я считаю, что соглашение началось с IBM 704 и его позорного «декрементного регистра». Современная речь назвала бы это поле смещения команды, но дело в том, что они пошли вниз , а не вверх .
Я не уверен, но я делал некоторое программирование для VAX / VMS в те дни. Кажется, я помню, что одна часть памяти (куча?) Поднимается, и стек падает. Когда они встретились, у вас не было памяти.
Всего 2c больше:
. Помимо всего сказанного исторического обоснования, я вполне уверен, что нет никаких оснований, которые бы имели место в современных процессорах. Все процессоры могут принимать подписанные смещения, а максимальная дистанция кучи / стека довольно спорная с тех пор, как мы начали работать с несколькими потоками.
Я лично считаю это недостатком дизайна безопасности. Если, скажем, дизайнеры архитектуры x64 могли бы обратить вспять направление роста стека, то переполнение буфера стека было бы устранено - это своего рода большое дело.