Javascript jQuery.get无法在github站点上使用https(甚至请求到同一域)
我已经看过了其他答案,但在我的例子中,我正在做一个简单的jQuery.get请求,在我的同一个域上也是这样:Javascript jQuery.get无法在github站点上使用https(甚至请求到同一域),javascript,jquery,Javascript,Jquery,我已经看过了其他答案,但在我的例子中,我正在做一个简单的jQuery.get请求,在我的同一个域上也是这样: //Now, lets pull the data for panels var maxi = $('#mainpanel .panel[id]').length; var count = 0; var processed = []; $('#mainpanel .panel[id]').each(function(index) { var id = $(this).attr(
//Now, lets pull the data for panels
var maxi = $('#mainpanel .panel[id]').length;
var count = 0;
var processed = [];
$('#mainpanel .panel[id]').each(function(index) {
var id = $(this).attr('id');
var turl = '/kb/resources/' + id;
console.log('pulling data for resource',id,turl);
$.get(turl , function(data){
console.log('success');
var dummy = document.createElement("data");
window.dummy = dummy;
$(dummy).append(data);
var title = $(dummy).find('h1').text();
var header = document.createElement("div");
var panelBody = document.createElement("div");
var ul = document.createElement("ul");
console.log('dbg 1');
$(header).addClass('text-center panel-heading');
$(header).append('<h4><a href="' + turl + '">' + title + '</a></h4>');
$(panelBody).addClass('panel-body panel-res-summary');
$(panelBody).append(ul);
console.log('dbg 2');
$('#' + id).append($(header));
$('#' + id).append($(panelBody));
$(dummy).find('.container.default li').each(function(index){
var item = $(this).find('a:first');
var cls='';
if (item.hasClass('imp')) cls='class="imp"'; // mark
if ($(panelBody).height() >= 200) return;
$(ul).append('<li><a ' + cls + ' href="' + item.attr('href') + '">' + item.text() + '</a></li>');
});
console.log('dbg 3');
$(panelBody).append('<a class="small pull-right" href="' + turl + '"><em><u>more...</u></em></a>');
processed.push(id);
count += 1;
console.log('processed');
if (count>=maxi) { //(count%3==0)
msel = '#' + processed[count-1];
msel += ' #' + processed[count-2];
msel += ' #' + processed[count-3];
adjustBoxes(); //Now, lets adjust the heights of all panels
console.log('now called adjustBoxes');
}
});
//现在,让我们提取面板的数据
var maxi=$('#mainpanel.panel[id]')。长度;
var计数=0;
var处理=[];
$('#mainpanel.panel[id]')。每个(函数(索引){
var id=$(this.attr('id');
var turl='/kb/resources/'+id;
日志('为资源提取数据',id,turl);
$.get(turl,函数(数据){
console.log('success');
var dummy=document.createElement(“数据”);
window.dummy=dummy;
$(虚拟)。追加(数据);
var title=$(虚拟).find('h1').text();
var header=document.createElement(“div”);
var panelBody=document.createElement(“div”);
var ul=document.createElement(“ul”);
console.log('dbg1');
$(标题).addClass('text-center面板标题');
$(标题)。附加(“”);
$(panelBody).addClass('panel-body panel res summary');
$(面板主体)。附加(ul);
console.log('dbg2');
$('#'+id).append($(头));
$('#'+id).append($(panelBody));
$(虚拟)。查找('.container.default li')。每个(函数(索引){
var item=$(this.find('a:first');
var-cls='';
if(item.hasClass('imp'))cls='class=“imp”';//标记
如果($(panelBody).height()>=200)返回;
$(ul).追加(“”);
});
console.log('dbg3');
$(面板主体)。附加(“”);
已处理。推送(id);
计数+=1;
console.log('processed');
如果(计数>=maxi){//(计数%3==0)
msel='#'+已处理[count-1];
msel+='#'+已处理[计数-2];
msel+='#'+已处理[count-3];
AdjustBox();//现在,让我们调整所有面板的高度
log('现在称为AdjustBox');
}
});
上述代码在localhost上运行良好,即使在站点版本中也是如此,但无法检索站点版本中的内容。既然我向同一个域发出请求,为什么它不返回任何内容
编辑
正如在评论中提到的,我使用公认的答案解决了这个问题。在url末尾添加反斜杠解决了这个问题,但问题仍然存在。这似乎是承载github页面的服务器的问题
编辑2
正如@jcaron正确指出的那样,问题肯定出在我的url上。它提供了一个
jekyll
生成的静态页面,该页面最后需要/
。由于我的代码缺少该页面,gh pages返回了301重定向并拒绝了第二个请求。然而,如果gh pages能够正确重定向到我的ajax请求的话st,我的问题从一开始就不会出现。简而言之,gh页面末尾的小故障仍然存在!问题的出现是因为两个问题的结合:
- 您的URL(例如
)不是实际的“良好”URL,它需要重定向才能添加最终的http://www.prahladyeri.com/kb/resources/php
/
- 服务器错误地重定向到
,而不是http
版本https
http
URL发出第二个请求,然后被拒绝
两种可能的解决办法:
- 正确地包括最终的
/
- 修复服务器以正确重定向到相应的协议
var turl='/kb/resources/'+id;
。这不是意味着相同的主机和协议(HTTPS)?@jcaron-没有错误,根本没有调用$.get()
请求回调函数。正如您所看到的,我已经打印了控制台.log('success'))
当它被调用时,但我在控制台上的任何地方都看不到该消息。正如@CBroe所指出的,控制台应该给你一个错误。它在这里是这样做的,但由于某种原因,我不再得到错误,页面组件现在加载正确。你有什么改变吗?谢谢你的解释,@jcaron!我怀疑有什么问题之所以这样做,是因为我正在使用Jekyll生成静态页面。所讨论的服务器是github页面(由github.com提供的宿主)。因此,修复这一问题是不可能的:-)。我添加了最后一个斜杠作为解决方法,但很高兴知道是什么导致了这一问题。