我想通过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();
但不起作用
我该怎么办。我是这种情况的新手...
答案 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 了解更多详细信息
第三 它被您请求的服务器阻止,然后您才能控制目标网站或其他访问规范
第四名
被您的主机阻止:设置标头(
像
)允许他们使用。