클로저스크립트에서 아약스 호출 구현
저는 클로저스크립트가 처음이라 이전에 작성된 애플리케이션을 순수하게 클로저스크립트로 구현하여 더 깊이 파고들고 싶지만, 아약스 콜을 구현하는 것에 대해 막막합니다.누가 온라인으로 예를 제시하거나 코드 스니펫 한두 개를 제공해 줄 수 있습니까?
2016년 1월 22일 업데이트
여전히 작동하지만, 원래의 답은 기여자가 1명 이상인 ClojureScript 솔루션이 일반적으로 부족했던 때의 것입니다.XhrIo를 직접적으로 활용하는 것보다, 아래의 Mikhail D가 제안한 cljs-ajax처럼 대신 포장하는 잘 유지되고 기능이 풍부한 솔루션을 사용하는 것을 확실히 고려해보세요!
그래서 Closurescript가 Google의 Closure 자바스크립트 라이브러리를 활용하는 것을 고려하면, Closure Documentation을 빠르게 검색한 결과 xhrIo가 AJAX 호출을 생성하는 적절한 방법으로 나타났습니다.
XhrIo와 함께 Closure의 비동기 XMLHttp Requests 사용 예제
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content,
opt_headers, opt_timeoutInterval)
클로저스크립트 소스를 간단히 검토한 결과 다음과 같은 기능이 나타났습니다.
clojure/clojure 스크립트의 src/cljs/clojure/browser/net.cljs에서 시작됨
(defn xhr-connection
"Returns an XhrIo connection"
[]
(goog.net.XhrIo.))
따라서 이 과정에서 의도된 결과를 얻을 수 있어야 합니다.
(def xhr xhr-connection)
(defn myCallback [replyValue]
... Do Something with replyValue
... for example: (someJsonFunc (.getResponseJson (.target replyValue))))
(defn ajax-json [url]
(.send xhr url myCallback))
JSONP의 경우 goog.net 을 사용하여 유사한 작업을 수행할 수 있습니다.Jsonp. 자세한 내용은 링크 참조:
누군가 이것이 도움이 되기를 바랍니다!
또 다른 실행 가능한 옵션은 https://github.com/JulianBirch/cljs-ajax 일 수 있습니다.
ClojureScript용으로 설계되었기 때문에 구문이 더 명확하고 간단해 보입니다.또한 다양한 기능을 즉시 지원합니다.transit
,edn
그리고.json
형식).
README의 몇 가지 예:
(ns foo
(:require [ajax.core :refer [GET POST]]))
...
(GET "/hello" {:handler handler
:error-handler error-handler})
(POST "/send-message"
{:params {:message "Hello World"
:user "Bob"}
:handler handler
:error-handler error-handler})
제가 했던 방식은 조금 다릅니다.마크가 답변에서 제시한 방식이 왜 저에게 안 맞았는지 모르겠습니다.이것이 유용하기를 바랍니다.
사용했습니다.goog.net.XhrIo
보다 직접적으로xhr-connection
포장지
(defn callback [reply]
(let [v (js->clj (.getResponseJson (.-target reply)))] ;v is a Clojure data structure
(your-function-here v)))
(.send goog.net.XhrIo url callback)
제가 볼 수 있는 가장 큰 차이점은 제가 사용해 봤다는 것입니다..-target
호출하는 대신 JSON 개체의 속성을 가져옵니다.target
.
주목할 점은 지도들이v
JSON 개체에서 생성된 키는 키워드가 아닌 문자열로 키를 지정합니다.
언급URL : https://stackoverflow.com/questions/8554745/implementing-an-ajax-call-in-clojurescript
'IT' 카테고리의 다른 글
"SELECT FROM" 쿼리를 Node.js의 Mariadb에 보냅니다. (0) | 2023.10.25 |
---|---|
골랑 문자열에 있는 문자를 색인하는 방법은? (0) | 2023.10.25 |
Chrome이 오리진 헤더를 동일 오리진 요청에 추가함 (0) | 2023.10.25 |
Apache가 MariaDB(PERL)와 함께 cnf 파일을 읽거나 사용하지 않음 (0) | 2023.10.25 |
UI 테스트 텍스트 필드의 텍스트 삭제 (0) | 2023.10.25 |