Получение данных с другого сайта с помощью AJAX - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть форма с двумя выпадающими списками «Клиника» и «Услуги».Теперь выпадающий список «сервис» будет обновляться в соответствии с изменением выпадающего списка «клиника».

Теперь данные «сервис» и «клиника» хранятся в другой базе данных веб-сайта.

У меня уже естьизвлекли данные «клиники», используя cURL.Но так как мне приходится обновлять раскрывающийся список «service» во время выполнения, поэтому я пытаюсь получить данные «service» с помощью AJAX.

HTML

<form method="post">
  <div class="chosen-select-single mg-b-20">
    <label><b>Select Clinic : </b></label>
    <select data-placeholder="Choose a Clinic..." class="chosen-select" tabindex="-1" name="clinic" id="clinic_id">
      <option value="">Select One</option>
      <?php foreach($clinic_datum as $data) { ?>
        <option value="<?php echo $data->id;?>"><?php echo $data->name?></option>
      <?php } ?>
    </select>
    <?php if($clinicErr != "") { ?>
      <span class="error">* <?php echo $clinicErr;?></span>
    <?php } ?>
  </div>
</form>

AJAX

jQuery("#clinic_id").change(function() {
  var clinic_id = $('#clinic_id').val();
  if(clinic_id.trim() != '') {
    jQuery.ajax({
      url: "http://www.sencare.com.bd/service_data_curl",
      type: 'GET',
      dataType: 'jsonp',
      data: {clinic_id : clinic_id},
      success: function(msg) {
        console.log('msg');
      }
    });
  }
});

Но я получаю эту ошибку

Блокировка перекрестного чтения (CORB) заблокировала перекрестный ответ http://www.sencare.com.bd/service_data_curl?callback=jQuery1113005791399070777792_1542690562198&clinic_id=2&_=1542690562199 с типом MIMEтекст / html.См. https://www.chromestatus.com/feature/5629709824032768 для более подробной информации

Как решить эту проблему ... Кто-нибудь, пожалуйста, помогите?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Когда вы загружаете данные динамически из стороннего API, вы должны изменить целевой URL-адрес ajax-запроса на скрипт в вашем собственном домене и извлечь данные с помощью curl, как вы это делали изначально.Затем верните его и действуйте как обычно.Вам , вероятно, не нужен jsonp для этого - просто обычный json должен работать нормально.

Теоретически, если вы можете добавить заголовки CORS на sencare.com, вы можете разрешитьзапросите ajax, выполнив что-то вроде этого в конфигурационном файле Apache:

Access-Control-Allow-Origin: https://{your-website-url}

В большинстве случаев, однако, вы захотите просто обрабатывать все на стороне сервера с помощью собственного сценария, поскольку это обеспечивает большую стабильность, гибкость идаже удобный способ проверки и дезинфекции всего, что выплевывает API.

0 голосов
/ 20 ноября 2018

Я только что ответил на похожий вопрос здесь. Предполагается, что вы используете веб-сервер Apache. Используя Fetch в реакции, требуется пароль для доступа к базе данных

По сути, ваш вопрос указывает, что ваш сервер должен быть настроен для обработки перекрестного общего доступа к ресурсам (CORS).

Если ваш веб-сервер - Apache, вы можете добиться этого, добавив следующую строку в файл конфигурации вашего сервера / виртуального хоста или в файл .htaccess в корневом каталоге вашего веб-сайта / веб-приложения.

Header set Access-Control-Allow-Origin "*"

Вам может потребоваться перезагрузить сервер, чтобы изменения вступили в силу. На машинах Linux это обычно достигается с помощью следующей команды.

sudo service apache2 restart

или

sudo service httpd restart
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...