我正在编写一个包装器fetch,我想在发出请求之前向URL添加内容,例如识别查询参数.我无法弄清楚如何Request使用与原始URL不同的URL 制作给定对象的副本.我的代码看起来像:
// My function which tries to modify the URL of the request
function addLangParameter(request) {
const newUrl = request.url + "?lang=" + lang;
return new Request(newUrl, /* not sure what to put here */);
}
// My fetch wrapper
function myFetch(input, init) {
// Normalize the input into a Request object
return Promise.resolve(new Request(input, init))
// Call my modifier function
.then(addLangParameter)
// Make the actual request
.then(request => fetch(request));
}
Run Code Online (Sandbox Code Playgroud)
我尝试将原始请求作为第二个arguent放到Request构造函数中,如下所示:
function …Run Code Online (Sandbox Code Playgroud) 注意:我不是在寻找任何替代方案.我知道这可以通过XMLHttpRequest来完成.我也不关心浏览器支持.我只想了解新的/即将推出的标准.
我有一个 File对象,我可以使用像这样的fetch上传它:
fetch(url, {
method: "PUT",
body: fileObject,
});
Run Code Online (Sandbox Code Playgroud)
如何从中获取上传进度?
据我所知body,fetch选项可以是ReadableStream.那么也许有一种方法可以将File对象包装到ReadableStream并从中获取进度状态?
例如.这样的事情
fetch(url, {
method: "PUT",
body: asReadableStream(fileObject, onProgress),
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果请求失败,新的js fetch API将失败(400):
fetch(uri).catch(function(err) {
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
发生这种情况时,真的没有办法获得响应机构吗?例如,检查错误代码.
编辑:我创建了一个js小提琴:https://jsfiddle.net/4x4xLwqo/,它调用这个mockbin端点:http://mockbin.org/bin/d87acbb0-526e-4d66-aea4-b827d9c35031/view
编辑2:更新jsfiddle以使用更好的端点:https://jsfiddle.net/4x4xLwqo/2/
我正在尝试使用fetch()API POST方法来获取PHP中的POST数据.
这是我尝试过的:
var x = "hello";
fetch(url,{method:'post',body:x}).then(function(response){
return response.json();
});
Run Code Online (Sandbox Code Playgroud)
PHP:
<?php
if(isset($_GET['x']))
{
$get = $_GET['x'];
echo $get;
}
?>
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我正在尝试使用fetch api创建一个http帖子.即使我发送令牌,我在VerifyCsrfToken.php中收到错误TokenMismatchException.如何使用fetch api拨打电话?(我也尝试过使用jQuery ajax并且它的工作正常)继承人fetch api代码
var URL = $("#form").attr("action");
var token = $("input[name='_token']").val();
var group_id = $(this).val();
fetch(URL, {
method: 'post',
mode: 'no-cors',
body: JSON.stringify({
'csrf-token': token,
'group_id': group_id
})
}).then(function(response){
return response.json();
}) .then(function(json){
})
.catch(function(error){
});
Run Code Online (Sandbox Code Playgroud)
我已经在这样的表单中添加了令牌
<form id="form" action="{{ url('api/getcoursebygroup') }}">
<input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />
</form>
Run Code Online (Sandbox Code Playgroud)
这个jQuery ajax调用工作正常:
$.ajax({
type: "POST",
url: URL,
data: { "group_id" : group_id, "_token" : token },
dataType: 'json'
}).done(function (result) {
if(result.code == …Run Code Online (Sandbox Code Playgroud) 我在使用fetch API时看到Firefox上的奇怪行为.我不知道我做错了什么,或者我是否错过了一些文档,我不想做什么.
如果我在localhost上托管下面的页面,Firefox会拒绝获取,并且TypeError: NetworkError when attempting to fetch resource.我在dev工具或Wireshark中看不到任何获取请求.似乎没有任何进一步的调试可用于诊断.
通过"托管在localhost",我的意思是由本地Web服务器(在这种情况下为nginx)托管,而不是从文件系统托管.例如,地址栏显示" http://localhost/fetch_localhost_error.html ".
托管在同一页面http://jsbin.com/yowebiyigi/edit?html,output或任何其他端点给出预期输出-文本出现在div,我看到了获取请求在开发工具正在取得进展.
Chrome在两种情况下都能正常工作,这意味着本地主机和远程服务器都为CORS等正确配置(但FF似乎永远不会查询远程).
我在Windows 7上都尝试了48和Nightly(51).不幸的是我现在无法访问任何其他操作系统.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="output"></div>
<div id="error"></div>
<script>
var result = fetch('http://www.randomtext.me/api/')
result.then(
function(response){
return response.json()
})
.then(
function (response) {
document.getElementById("output").innerHTML = response.text_out;
})
.catch(
function(error){
document.getElementById("error").innerHTML = error;
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这非常令人沮丧,因为我无法在本地开发基于fetch的解决方案.任何人都可以对正在发生的事情发光吗?
好吧,我知道这是一个坏主意,不应该这样做,但为了这个问题,请假设没有其他方法 - 我得到的 API 端点需要以空对象作为主体的 GET 请求。
有没有办法从浏览器执行异步请求?我正在使用在幕后axios使用的库, MDN说当 HTTP 方法是 时会擦除主体。我尝试使用本机,但它在浏览器中给我这个错误:
XMLHttpRequestsendGETfetchTypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
有什么办法可以做到吗?
我知道它Fetch Domain用于此目的,但我不知道如何准确地实现它。在 Selenium python 中,我使用以下代码来启用requestPaused事件的发出。
driver.execute_cdp_cmd("Fetch.enable",{})
driver.get('https://www.example.com')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何处理requestPaused事件(我需要调用 1fulfillRequest或continueRequest/ continueWithAuth)。结果,我的程序停止工作。如果有人能为我提供一个例子来帮助我理解它是如何工作的,我真的很感激。
selenium google-chrome-devtools fetch-api chrome-devtools-protocol selenium4
我正在尝试在 TypeScript 中使用AbortController。
给定这个小文件:
const controller = new AbortController();
Run Code Online (Sandbox Code Playgroud)
我从 TypeScript 编译器收到以下错误:
src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.
1 const controller = new AbortController();
~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
TypeScript 有关于AbortController 的文档。我还从 Github 发现了一个问题,该问题已通过合并包含 AbortController 类型定义的拉取请求得到解决。所以它应该是可用的。
我的tsconfig.json包含:
src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.
1 const controller = new AbortController();
~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
lib和选项设置为.target"ESNext"global.AbortController。大家好,我可以将 axios 与 next.js 13 一起使用,并且仍然获得带有缓存和重新验证配置的扩展 fetch api 版本的相同结果吗?
axios 会走向这个网络标准的方向吗?
我真的很喜欢 axios.intereceptors 功能,我应该使用下一个中间件吗?
能给我 2 美分吗?
My first stackoverflow question, even coding for 2 years (still) ... please vote up so I can unlock the mid dev super powers tks
`export default async function Page() {
// revalidate this data every 10 seconds at most
const res = await **axios.get**('https://...', { next: { revalidate: 10, cache: 'force-cache' .... } });
const data = res.json();
// ...
}
// does …Run Code Online (Sandbox Code Playgroud) fetch-api ×10
javascript ×6
axios ×2
fetch ×1
firefox ×1
get ×1
jquery ×1
laravel ×1
middleware ×1
next.js13 ×1
selenium ×1
selenium4 ×1
typescript ×1
urlfetch ×1