jQuery.get 没有从有效的 URL 中提取数据
jQuery.get is not pulling data from a valid URL
TLDR
jQuery.get()
正确地提取了一个 select
选项 onchange
值的 header 信息,但不是其他的,即使它们是有效的 URLs。
目标
使用 jQuery 和 GitLab API 验证 header 值的 header 信息,当用户更改时和提交表单之前。
进程
- 用户从
select
和 class opt0
中选择了一个值。
onchange
呼叫 jQuery.
- jQuery 验证 URL 是否存在(并最终将继续验证数组的详细信息)。
- jQuery return将现有URL的数组传给Chrome开发者控制台(暂时)。
- jQuery 最终将 return 无效 URL 作为控制台消息或
alert()
.
实际结果
控制台报告找不到有效 URLs 的项目。
选择每个值都会产生以下控制台信息:
- xxxxxxx:
(9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
- yyyyyyy:
jquery.min.js:2 GET https://gitlab.com/api/v4/projects/yyyyyyy/repository/tree 404 (Not Found)
- zzzzzzz:
jquery.min.js:2 GET https://gitlab.com/api/v4/projects/zzzzzzz/repository/tree 404 (Not Found)
请记住,所有 URL 都是有效的并且包含我要查找的正确数组数据。
预期结果
我的期望是,既然一个 URL 可以正常工作,那么所有的 URL 都应该正常工作,因为它们都是有效的 URL。以下是所需结果的示例:
- xxxxxxx:
(9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
- yyyyyyy:
(3) [{…}, {…}, {…}]
- zzzzzzz:
(5) [{…}, {…}, {…}, {…}, {…}]
错误
错误信息 returned:
{"message":"404 Project Not Found"}
.
jquery.min.js:2 XHR failed loading: GET https://gitlab.com/api/v4/projects/xxxxxxx/repository/tree
jquery.min.js:2 XHR failed loading: GET https://gitlab.com/api/v4/projects/yyyyyyy/repository/tree
我已经登录到 gitlab,所以身份验证应该不是问题。
已尝试
$.load()
- 结果相同。
$.ajax()
- 结果相同。
$.get()
- 显示错误。由于它的简单性,我想我会选择它。
parseInt(this.value)
- 结果相同。
var url = encodeURIComponent("https://gitlab.com/api/v4/projects/" +
parseIntthis.value) + "/repository/tree");
- 不加载 URL
Chrome 开发者控制台 > 网络 > 清除浏览器缓存
Chrome developer console > Network > XHR > Initiator -> Path and chain 看起来是正确的。
代码
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".opt0").change(function(){
var url = "https://gitlab.com/api/v4/projects/" + this.value + "/repository/tree";
$.get(url, function( data ) {
console.log(data);
}, "json" );
});
});
</script>
</head>
<body>
<?php
$menu = array('xxxxxxx', 'yyyyyyy', 'zzzzzzz');
echo "<select name=selex class='opt0'>";
echo "<option value=''>---</option>";
foreach ($menu as $option) {
echo "<option value=$option>$option</option>";
}
echo "</select>";
?>
</body>
</html>
答案毕竟是身份验证问题。
<script>
$(document).ready(function(){
$(".opt0").change(function(){
var url1 = "https://gitlab.com/api/v4/projects/"+this.value+"/repository/tree";
var settings = {
"async": true,
"crossDomain": true,
"url": url1,
"method": "GET",
"headers": {
"PRIVATE-TOKEN": "<your token>"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
});
});
</script>
TLDR
jQuery.get()
正确地提取了一个 select
选项 onchange
值的 header 信息,但不是其他的,即使它们是有效的 URLs。
目标
使用 jQuery 和 GitLab API 验证 header 值的 header 信息,当用户更改时和提交表单之前。
进程
- 用户从
select
和 classopt0
中选择了一个值。 onchange
呼叫 jQuery.- jQuery 验证 URL 是否存在(并最终将继续验证数组的详细信息)。
- jQuery return将现有URL的数组传给Chrome开发者控制台(暂时)。
- jQuery 最终将 return 无效 URL 作为控制台消息或
alert()
.
实际结果
控制台报告找不到有效 URLs 的项目。
选择每个值都会产生以下控制台信息:
- xxxxxxx:
(9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
- yyyyyyy:
jquery.min.js:2 GET https://gitlab.com/api/v4/projects/yyyyyyy/repository/tree 404 (Not Found)
- zzzzzzz:
jquery.min.js:2 GET https://gitlab.com/api/v4/projects/zzzzzzz/repository/tree 404 (Not Found)
请记住,所有 URL 都是有效的并且包含我要查找的正确数组数据。
预期结果
我的期望是,既然一个 URL 可以正常工作,那么所有的 URL 都应该正常工作,因为它们都是有效的 URL。以下是所需结果的示例:
- xxxxxxx:
(9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
- yyyyyyy:
(3) [{…}, {…}, {…}]
- zzzzzzz:
(5) [{…}, {…}, {…}, {…}, {…}]
错误
错误信息 returned:
{"message":"404 Project Not Found"}
.jquery.min.js:2 XHR failed loading: GET https://gitlab.com/api/v4/projects/xxxxxxx/repository/tree
jquery.min.js:2 XHR failed loading: GET https://gitlab.com/api/v4/projects/yyyyyyy/repository/tree
我已经登录到 gitlab,所以身份验证应该不是问题。
已尝试
$.load()
- 结果相同。$.ajax()
- 结果相同。$.get()
- 显示错误。由于它的简单性,我想我会选择它。parseInt(this.value)
- 结果相同。var url = encodeURIComponent("https://gitlab.com/api/v4/projects/" + parseIntthis.value) + "/repository/tree");
- 不加载 URLChrome 开发者控制台 > 网络 > 清除浏览器缓存
Chrome developer console > Network > XHR > Initiator -> Path and chain 看起来是正确的。
代码
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".opt0").change(function(){
var url = "https://gitlab.com/api/v4/projects/" + this.value + "/repository/tree";
$.get(url, function( data ) {
console.log(data);
}, "json" );
});
});
</script>
</head>
<body>
<?php
$menu = array('xxxxxxx', 'yyyyyyy', 'zzzzzzz');
echo "<select name=selex class='opt0'>";
echo "<option value=''>---</option>";
foreach ($menu as $option) {
echo "<option value=$option>$option</option>";
}
echo "</select>";
?>
</body>
</html>
答案毕竟是身份验证问题。
<script>
$(document).ready(function(){
$(".opt0").change(function(){
var url1 = "https://gitlab.com/api/v4/projects/"+this.value+"/repository/tree";
var settings = {
"async": true,
"crossDomain": true,
"url": url1,
"method": "GET",
"headers": {
"PRIVATE-TOKEN": "<your token>"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
});
});
</script>