Итак, как уже говорилось,
в декабрьском (2005 г.) номере phpinside была опубликована статья "Sajax - реализация Ajax в PHP". Статья несомненно хорошая, с примерами. Используется библиотека
sajax, работающая, кстати совсем не только с PHP, но и с ASP, Phyton, Rubby, Perl и т.д.
Так вот, у меня тут дошли наконец руки посмотреть примеры и подробности и по этому поводу 2 замечания:
1) в примере из статьи ("Пример для быстрого старта") - опечатка. Вызов x_onClick="AjaxDo()"; - неверен. Следует переправить на
onClick="AjaxDo()";
2) после этого пример начинает работать, на его основе можно городить что-то посложнее, но все это счастье кончается, как только мы переходим к работе с template-ами, в которых html отделен от кода. (Я работаю с потомками phplib, но, думаю, что сказанное верно для любых шаблонов, в которых переменные просто вставляются, например в фигурных скобках {my_var} (smarty и другие, особенно пассивные шаблоны). В этом случае попытка выкинуть PHP-код в PHP, оставив HTML и JavaScript в шаблоне терпит фиаско, т.к. наружу нагло лезет кусок, JavaScripta, высовываемого наружу из самой библиотеки.
Решение: правим функцию, которая хулиганит: function sajax_show_javascript вместо echo sajax_get_javascript(); пишем return sajax_get_javascript();
Код:
![Выделить весь код](images/misc/selectcode.png)
function sajax_show_javascript()
{
// sajax + templates (i.e. our, smarty (as it use the same principle) and others)
return sajax_get_javascript();
}
теперь в шаблоне можно вместо вставки PHP с вызовом этой функции написать, скажем {sajax}, а в обрабатывающем PHP установить для этой переменной значение sajax_show_javascript()
have fun
![Smile](images/smilies/new/smile.gif)