尝试用纯js fetch重写jQueryAjax。取尸体
在Laravel驱动的站点上,有一个jquery脚本控制购物车中商品的数量和总价。我正试图用纯JSFETCH在cart中重写jQueryAjax。但是,无法通过body来获取get请求!所需参数(数量、产品类型)将传递给车身。如果你把尸体放进去,脚本发誓尸体不应该被放进去。如果您将body更改为data(或任何其他单词)。请求通过,但返回值中的默认零,就好像此参数未通过一样。如果将get方法更改为post,则会出现404错误。告诉我如何解决这个问题 旧书尝试用纯js fetch重写jQueryAjax。取尸体,jquery,ajax,fetch,pure-js,Jquery,Ajax,Fetch,Pure Js,在Laravel驱动的站点上,有一个jquery脚本控制购物车中商品的数量和总价。我正试图用纯JSFETCH在cart中重写jQueryAjax。但是,无法通过body来获取get请求!所需参数(数量、产品类型)将传递给车身。如果你把尸体放进去,脚本发誓尸体不应该被放进去。如果您将body更改为data(或任何其他单词)。请求通过,但返回值中的默认零,就好像此参数未通过一样。如果将get方法更改为post,则会出现404错误。告诉我如何解决这个问题 旧书 $.ajax({ type: &qu
$.ajax({
type: "get",
url: "{{ route('ajax.set.product.count') }}",
data: {
product_type: product_type,
product_id: product_id,
new_count: new_count,
_token: "{{ csrf_token() }}"
},
dataType: "json",
success: function(data) {
console.log(data);
if (data.error == 'no') {
$('#productcount-1-' + index).val(data.new_count);
$('#productprice-1-' + index).text(data.price_product);
$('#productcount-2-' + index).val(data.new_count);
$('#productprice-2-' + index).text(data.price_product);
$('#price_all').text(data.price_all);
if (data.poil_count > 0) $('.pcount').text(data.poil_count);
}
}
});
新剧本
fetch('{{ route('ajax.set.product.count') }}', {
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
method: 'get',
credentials: "same-origin",
body: JSON.stringify({
product_type: product_type,
product_id: product_id,
new_count: new_count,
_token: "{{ csrf_token() }}"
}),
}).then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
if (data.error == 'no') {
document.getElementById('productcount-1-' + index).value = data.new_count;
document.getElementById('productprice-1-' + index).textContent = data.price_product;
document.getElementById('productcount-2-' + index).value = data.new_count;
document.getElementById('productprice-2-' + index).textContent = data.price_product;
document.getElementById('price_all').textContent = data.price_all;
if (data.poil_count > 0) document.querySelector('.pcount').textContent = data.poil_count;
};
})
GET
请求中的参数放在URL的搜索字段中,因为没有正文
const body={
产品类型:产品类型,
产品标识:产品标识,
新计数:新计数,
_令牌:{{csrf_token()}}”
};
const params=Object.entries(body.map)((k,v)=>k+'='+encodeURIComponent(v)).join('&');
fetch({route('ajax.set.product.count')}}}?+参数{
标题:{
“接受”:“应用程序/json”,
“X-request-With”:“XMLHttpRequest”
},
方法:“get”,
凭据:“相同来源”
}).然后(功能(响应){
返回response.json();
}).then(功能(数据){
控制台日志(数据);
如果(data.error==“否”){
document.getElementById('productcount-1-'+索引)。value=data.new\u count;
document.getElementById('productprice-1-'+索引).textContent=data.price\u product;
document.getElementById('productcount-2-'+索引)。value=data.new\u count;
document.getElementById('productprice-2-'+索引).textContent=data.price\u product;
document.getElementById('price_all')。textContent=data.price_all;
如果(data.poil_count>0)document.querySelector('.pcount')。textContent=data.poil_count;
};
})
GET请求中没有主体。参数以URL编码的格式放入URL。如何将正文重写为URL编码的格式?重写变量如下const-params=Object.entries(body).join(
&).replace(/,/g,
=)代码>因为只有这种类型的链接被接受https://sait/ajax/set-product-count?product_type=diffuzor&product_id=38&new_count=2&_token=545234
现在一切正常。再次感谢您对正确方法的提示和解释。非常感谢!