IT

클로저스크립트에서 아약스 호출 구현

itgroup 2023. 10. 25. 23:15
반응형

클로저스크립트에서 아약스 호출 구현

저는 클로저스크립트가 처음이라 이전에 작성된 애플리케이션을 순수하게 클로저스크립트로 구현하여 더 깊이 파고들고 싶지만, 아약스 콜을 구현하는 것에 대해 막막합니다.누가 온라인으로 예를 제시하거나 코드 스니펫 한두 개를 제공해 줄 수 있습니까?

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. 자세한 내용은 링크 참조:

JSONP Closure API

누군가 이것이 도움이 되기를 바랍니다!

또 다른 실행 가능한 옵션은 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.

주목할 점은 지도들이vJSON 개체에서 생성된 키는 키워드가 아닌 문자열로 키를 지정합니다.

언급URL : https://stackoverflow.com/questions/8554745/implementing-an-ajax-call-in-clojurescript

반응형