トップ «前の日記(2007-12-04) 最新 次の日記(2007-12-07)» 編集

Route 477



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のとき) とかタイムアウトしたとき(検出方法未調査)はどうするのが良いのかなぁ。