【问题标题】:How to get ajax response from cross-domain by posting some data to the controller method.while working at online server如何通过将一些数据发布到控制器方法来获得跨域的 ajax 响应。在在线服务器上工作时
【发布时间】:2019-01-29 21:28:57
【问题描述】:

我想通过 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();

但不起作用

我该怎么做。我对这种情况不熟悉......

【问题讨论】:

  • 你有没有收到任何消息(404,500 等)
  • 是:303 查看其他

标签: javascript jquery ajax codeigniter cross-domain


【解决方案1】:

它们是 4 可能的原因/解决方案

首先请检查您的 CI 版本如果是旧版本请检查 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了解更多详情

第三次 它被您请求的服务器阻止,那么在您控制目标网站或其他访问规范之前,它是不可能的

第四
被您的主机阻止:设置标题( 喜欢

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

) 允许他们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2018-08-05
    • 2023-03-30
    • 2016-03-28
    相关资源
    最近更新 更多