Разница между jquery ajax jsonp и angularjs $ http json - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь перенести функцию, написанную в jquery, на angularjs. Поэтому вместо использования метода jquery ajax я пытаюсь использовать метод angularjs '$ http. Код позволяет пользователю подписаться на рассылку mailchimp. Интересно, что когда я использую метод jquery, проблем не возникает. Однако, когда я использую метод angularjs, я получаю сообщение об ошибке 404, хотя я могу видеть в сетевых запросах, что доступен ответ от mailchimp. Что я делаю не так с angularjs?

Я опубликую два фрагмента кода ниже:

AngularJS

 $http({
    method: "JSONP",
    url:
      "https://XXX.us4.list-manage.com/subscribe/post-json? 
       u=XXX&amp&id=XXX&c=?",
    params: { EMAIL: this.text },
  }).then(
    function successCallback(response) {
      console.log("success");
      console.log(response);
    },
    function errorCallback(response) {
      console.log("error");
      console.log(response);
    }
  );

jQuery ajax

  function successCallback(resp) {
    console.log(resp);
  }

  $.ajax({
    url:
      "https://XXX.us4.list-manage.com/subscribe/post-json? 
       u=XXX&amp&id=XXX&c=?",
    data: { EMAIL: this.text },
    success: successCallback,
    dataType: "jsonp",
    error: function(resp, text) {
      console.log("mailchimp ajax submit error: " + text);
    }
  });
};

1 Ответ

1 голос
/ 17 января 2020

Из документов:

Обратите внимание, что, поскольку запросы JSONP чувствительны, поскольку ответу предоставляется полный доступ к браузеру, URL-адрес должен быть объявлен через $ sce как URL доверенного ресурса. Вы можете доверять URL-адресу, добавив его в белый список через $ sceDelegateProvider.resourceUrlWhitelist или явно доверяя URL-адресу через $ sce.trustAsResourceUrl (url) .

Для получения дополнительной информации см.

...