Как получить ajax-ответ от междомена, отправив некоторые данные в метод контроллера, работая на онлайн-сервере - PullRequest
0 голосов
/ 29 января 2019

Я хочу получить данные массива от контроллера Codeigniter, с помощью ajax-запроса. Я отправляю некоторые данные на контроллер для получения связанных данных из базы данных. Локально работает, но когда я загрузил свой сайт в онлайн-домен и хостинг, я не могу получитьлюбой ответ.

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

$.ajax({
            type:'POST',
            url:'<?php echo base_url()?>getstate',
            data:'country_id='+country_id,
            success:function(data){
              var dataObj = jQuery.parseJSON(data);
               $(dataObj).each(function(){

                          // Add options
                          $.each(dataObj,function(index,data){
                              alert(data['data_name']);

                          });


                    });
                }
 })

код на стороне сервера:

 public function getstate()
    {
        $state = array();
        $country_id = $this->input->post('country_id');
        $state = $this->Country_model->getstate($country_id);
        echo json_encode($state);

    }

Я пробовал это

var xhr=new XMLHttpRequest();
      xhr.oppen("GET","http://www.my-domain-name.co/getstate",true);
      xhr.onreadystatechange = function()
      {
          if((xhr.readyState == 4)&&(xhr.status==200))
          {
              var ob=JSON.parse(xhr.responseText);
              alert(ob.name);
              }
        };
        xhr.send();

, но не работает

Как я могу это сделать.Я новичок в этой ситуации ...

1 Ответ

0 голосов
/ 29 января 2019

они 4 возможная причина / решение

первая пожалуйста, проверьте версию CI, если она старая, проверьте определение base_url

если сайт получил безопасный URL (https) сейчас.

2-й добавить параметр crossDomain к функции jjery ajax следующим образом:

 $.ajax({
        type:'POST',
         crossDomain : true,
        url:'<?php echo base_url()?>getstate',
        data:'country_id='+country_id,
        success:function(data){
          var dataObj = jQuery.parseJSON(data);
           $(dataObj).each(function(){

                      // Add options
                      $.each(dataObj,function(index,data){
                          alert(data['data_name']);

                      });


                });
            }
})

проверьте это для получения более подробной информации

3-й заблокирован сервером, который вы запрашиваете, тогда это будет невозможно до тех пор, пока вы не получите целевой веб-сайт под вашим контролем или другой доступ не определит

4-й
заблокирован вашим хостингом: установите заголовки (например,

  • Access-Control-Allow-Origin,
  • Content-Security-Policy
  • и т.д.

) за их разрешение.

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