Javascript (Ajax) e HTML em Lisp
12 de Outubro de 2008 @ 15:56 - LucindoArquivado sob common lisp, javascript, web | Link desta publicação | Enviar por e-mail
Para testar algumas coisas refiz hoje o código do post Common Lisp e Ajax. Desta vez estou usando o patch para o HT-AJAX com suporte e jQuery. Além disso, para gerar código JavaScript uso Parenscript. Assim todo HTML e JS é produzido por s-exps:
(eval-when (:compile-toplevel :load-toplevel :execute)
(defparameter *dependencies*
‘(:asdf :hunchentoot :ht-ajax :cl-who :parenscript))
(map nil ‘require *dependencies*))
(defpackage :ajax-test
(:use :common-lisp :hunchentoot :ht-ajax :cl-who :parenscript))
(in-package :ajax-test)
(defparameter *local-dir* “/Users/lucindo/Documents/Lisp/web/3rdparty/”)
(defparameter *ajax-handler-url* “/ajax”)
(defparameter *ajax-processor*
(make-ajax-processor :type :jquery
:server-uri *ajax-handler-url*
:js-file-uris “/static/jquery.js”))
(defun testfunc (command)
(prin1-to-string (handler-case (eval (read-from-string command nil))
(error (c) (format nil “~a” c)))))
(defun js ()
(ps
(defun command_clicked ()
(let ((command (document.get-element-by-id “command”)))
(with-slots (value) command
(ajax_testfunc_set_element “result” value))))))
(defun main-page ()
(with-html-output-to-string
(*standard-output* nil :prologue t)
(:html
(:head
(:script :type “text/javascript” :src “/js”)
(:title “AJAX test”)
(fmt “~a” (generate-prologue *ajax-processor*)))
(:body
(:h1 “ajax test”)
(:table :width “50%”
(:tr
(:td :colspan “2″
(:span :id “result”
(:i “no results yet”))))
(:tr
(:td :width “70%”
(:input :type “text”
:size “70″
:name “command”
:id “command”))
(:td (:input :type “button”
:value “eval”
:onclick (ps-inline (command_clicked))))))))))
(eval-when (:load-toplevel :execute)
(export-func *ajax-processor* ‘testfunc :method :post)
(setf *dispatch-table*
(list ‘dispatch-easy-handlers
(create-folder-dispatcher-and-handler “/static/”
*local-dir* “text/plain”)
(create-prefix-dispatcher *ajax-handler-url*
(get-handler *ajax-processor*))
(create-prefix-dispatcher “/js” ‘js)
(create-prefix-dispatcher “/” ‘main-page))))
(defparameter *webserver* nil)
(defun start-web (&optional (port 4242))
(setf *webserver* (start-server :port port)))
(defun stop-web ()
(stop-server *webserver*))
Download: ajax2.lisp
1 Comentário »
RSS de comentários deste artigo. URI para link desta publicação:
Deixe um comentário
Hits para esta publicação: 618
(blog ‘lucindo) | http://blog.lucindo.com.br
[…] (blog ‘lucindo) » Javascript (Ajax) e HTML em Lisp Para testar algumas coisas refiz hoje o código do post Common Lisp e Ajax. Desta vez estou usando o patch para o HT-AJAX com suporte e jQuery. Além disso, para gerar código JavaScript uso Parenscript. Assim todo HTML e JS é produzido por s-exps: (tags: blog.lucindo.com.br 2008 mes9 dia13 JavaScript HTML Lisp Common_Lisp Ajax web) […]
Pingback de rascunho » Blog Archive » links for 2008-10-13 — 13 de Outubro de 2008 #