gpt4 book ai didi

javascript - Ajax 从 jquery 到 javascript

转载 作者:行者123 更新时间:2023-12-02 23:11:31 24 4
gpt4 key购买 nike

我想将 ajax 函数从 jquery 转换为纯 JavaScript

我已经尝试过这个,但它的 react 方式与我尝试使用纯 js 时 url 未收到响应的方式不同

这是我的jquery

(function ($){
try{
var event_category = 'a';
var event_name = 'b';
var page_url = 'c';
var url = "myurl";
var data = {
event_category: event_category,
event_name: event_name,
page_url: page_url
};
$.ajax({
crossDomain: true,
type: "POST",
url: "myurl",
data : {event_category: event_category,
event_name: event_name,
page_url: page_url
}
});
} catch(e){console.log(e)};
})(jQuery);

这是我尝试过的

var event_category = 'action';
var event_name = 'click';
var page_url = 'test';
var request = new XMLHttpRequest();
request.open('POST', 'myurl');
request.setRequestHeader("Content-Type", "application/json; utf-8");
params = {
event_category: event_category,
event_name: event_name,
page_url: page_url
}
request.send(JSON.stringify(params));

不确定我应该改变什么

编辑:

根据其中一条评论,我在开发者工具上检查了网络数据jquery 对此格式的 header 有响应 enter image description here enter image description here

但是 JavaScript 发送的数据是这种格式

enter image description here

基本上,JavaScript 不会以 url 参数格式发送它。不确定如何强制它以相同的格式发送

最佳答案

有什么理由不使用 fetch API(它可以在蹩脚的浏览器中进行填充...)?

const ajax = async function(url, data) {
try {

const response = await fetch(url, {
credentials: 'include', // like jQuery $.ajax's `crossDomain`
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
// this mimics how jQuery sends POST data as querystring by default
body: Object.entries(data).map(([key, val]) => `${key}=${val}`).join('&'),
});

data = await (
response.headers.get('content-type').includes('json')
? response.json()
: response.text()
);

console.log(data);

return data;
} catch(err) { console.log(err) };
}

ajax('myurl', {
event_category: 'a',
event_name: 'b',
page_url: 'c',
});

关于javascript - Ajax 从 jquery 到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com