在cljs / re-frame中的Ajax mailchimp表单

时间:2018-01-06 00:55:30

标签: javascript ajax mailchimp clojurescript re-frame

我试图在重新框架应用中实现this回答中的黑客攻击。

它的工作原理是我实际上收到了确认电子邮件,但它会抛出错误并发送:on-failure事件。

代码:

(ns foo.events
  (:require
   [re-frame.core :as rf]
   [ajax.core :as ajax]
   [day8.re-frame.http-fx]))

(rf/reg-event-db :mc/yes
  (fn [db res] (prn res) db))

(rf/reg-event-db :mc/no
  (fn [db res] (prn res) db))

(rf/reg-event-fx :mc
  (fn [_ _]
    {:http-xhrio
     {:method :get
      :uri "https://XXX.us15.list-manage.com/subscribe/post-json?u=XXX&id=XXX&c=?"
      :format (ajax/json-request-format)
      :response-format (ajax/json-response-format)
      :params {"FNAME" "fooobar"
               "EMAIL" "some.dude@example.com"}
      :on-success [:mc/yes]
      :on-failure [:mc/no]}}))

(comment
  (rf/dispatch [:mc]) ; I execute this in my editor.
  )

错误:

Failed to load https://XXX.us15.list-
manage.com/subscribe/post-json?u=XXX&id=XXX&c=?
&FNAME=fooobar&EMAIL=some.dude@example.com: No 'Access-Control-
Allow-Origin' header is present on the requested resource. Origin 
'http://localhost:3449' is therefore not allowed access.

打印到控制台的内容:

[:mc/no {:uri "https://XXX.us15.list-manage.com/subscribe/post-json?u=XXX&id=XXX&c=?&FNAME=fooobar&EMAIL=some.dude@example.com", :last-method "GET", :last-error " [0]", :last-error-code 6, :debug-message "Http response at 400 or 500 level", :status 0, :status-text "Request failed.", :failure :failed}]

编辑:

除了依赖jquery之外,这就是我想要的。这与http-xhrio版本有何不同?

(defn mailchimp-signup! [data on-success on-failure]
  (-> js/$
      (.ajax #js{:type "get"
                 :data (clj->js data)
                 :url "https://XXX.us15.list-manage.com/subscribe/post-json?u=XXX&id=XXX&c=?"
                 :cache false
                 :dataType "json"
                 :contentType "application/json; charset=utf-8"
                 :error on-failure
                 :success on-success})))

0 个答案:

没有答案