2007-12-06
■ [biwascheme] Re:Re:biwascheme でXHR
POSTはLiveCodingのときに作ったので、
(define result (http-post "textgraph.cgi" `(("text" . ,zu) ("format" . "sexp"))))
みたいにURLとalistを渡すことでPOSTできるようになりました (注:quasiquoteはまだ実装していないので、実際にはlistとconsでどうぞ…(´・ω・`))
というわけで、今は
- (http-request url) : GET
- (http-post url params) : POST
という風になっています。 コールバックは今のところonSuccessとonFailureしか見てなくて、前者の場合は結果の文字列、後者の場合は#fを返すようにしています。
あとイベントハンドラにSchemeのクロージャを設定できるようになったので、
(define $ getelem)
(set-handler! ($ "preview-btn") "click" (lambda (e) (let ((text (get-content ($ "source")))) (set-content! ($ "preview-div") (or (http-post "wikiformatter.cgi" (list (cons "text" . text))) "error: connection failed")))))
とか書けます :-)
リクエストがタイムアウトしたとき急に切れたとき(transport.responceText === nullのとき)
とかタイムアウトしたとき(検出方法未調査)はどうするのが良いのかなぁ。