Я тоже столкнулся с некоторыми проблемами. Вероятно, проблемы с пространством имен, как здесь предлагается в другом ответе.
Вместо того чтобы выяснить, что / когда / почему, я просто использовал <input name="blah" type=hidden>
, а затем обновил и прочитал это с помощью Javascript:
Затем, чтобы написать переменную: document.getElementById('blah').value='some new value';
Чтобы прочитать переменную: somevar=document.getElementById('blah').value;
Это сработало каждый раз. На самом деле выяснение правильного пространства имен было бы лучшим вариантом, но это работает.
РЕДАКТИРОВАТЬ: Используете ли вы какие-либо библиотеки Javascript, чтобы сделать ваш AJAX для вас, или просто кодируете его с нуля? Я использовал xajax, Prototype и Jquery для таких вещей. Jquery - мой новый ребенок, но 5 лет назад это было очень просто в xajax.
Я не уверен, что хочу направить вас по этому пути, но для программиста php xajax - довольно простой метод для изучения. Jquery более мощный и расширяемый, хотя, на мой взгляд.
РЕДАКТИРОВАТЬ2: Насколько я могу судить, вы возвращаете и HTML и JavaScript для выполнения в одном ответе. Включение JavaScript в ваш ответ не делает его выполненным. Возможно, вам следует сериализовать ваш возврат с JSON, чтобы вы могли оценить свой javascript для выполнения и назначить свой innerHTML отдельно.
Просто для справки, то же самое, что вы могли бы сделать в xajax просто:
$objResponse->addAssign("idhere","innerHTML", "some html");
$objResponse->addScript("somvar = somevar + someothervar");