在在线服务器上工作时,如何通过将一些数据发布到控制器方法来从跨域获得ajax响应。

时间:2019-01-29 11:09:27

标签: javascript jquery ajax codeigniter cross-domain

我想通过ajax请求从Codeigniter控制器获取数组数据。我正在向控制器发布一些数据以从数据库获取相关数据。它在本地运行良好,但是当我将网站上传到在线域并托管时我无法获取任何回应。

我的代码在本地服务器上运行正常,但是当我将其上传到在线服务器时,我的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 :(得分:0)

他们有 4 个可能的原因/解决方案

第一请检查您的配置项版本是否旧,请检查base_url定义

如果站点现在有了安全的URL(https)。

第二  将crossDomain参数添加到jquery 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']);

                      });


                });
            }
})

check this 了解更多详细信息

第三 它被您请求的服务器阻止,然后您才能控制目标网站或其他访问规范

第四名
被您的主机阻止:设置标头( 像

  • 访问控制允许来源
  • 内容安全政策

)允许他们使用。