[英]error with jQuery AJAX on Safari and iOS devices
我有一個與 Safari 和所有 iOS 設備的兼容性問題。 我為一個項目創建了這個 jQuery 代碼(見下面的鏈接),但我不明白為什么它不能與 Safari 一起使用。 在 Chrome、Firefox、Android 上運行良好。
(function ($) {
$.ajaxSetup({ cache: false });
const ajax_dir = '/wp-content/plugins/oxygen-functions/assets/ajax/';
// SELECT LOCATION-SERVICE FORM
$('.serv-select select').html(select_vars.services_select);
$('.loc-select select').html(select_vars.locations_select);
$('.service-location-form')
.closest('form')
.submit(async function (e) {
e.preventDefault();
$(this).find('.frm_message').addClass('d-none');
var form = $(this).serializeArray(),
service = form.find((x) => x['name'] == `item_meta[33]`).value,
loc = form.find((x) => x['name'] == `item_meta[34]`).value,
cat = loc + ',' + service,
posts = await $.ajax({
type: 'post',
async: true,
url: ajax_dir + 'posts-by-cat.php',
dataType: 'json',
data: {
post_type: 'services',
cat: cat,
},
}),
url = await $.ajax({
type: 'post',
async: true,
url: ajax_dir + 'post-link-id.php',
dataType: 'json',
data: {
id: posts[0],
},
});
//console.log(url);
location.href = url;
});
})(jQuery);
這是我從 DevConsole 得到的錯誤:
Unhandled Promise Rejection [object Object]
(anonymous function) - scripts.js:21
asyncFunctionResume
(anonymous function)
promiseReactionJobWithoutPromise
我該如何解決? 一些想法?
謝謝!
目前,您的代碼沒有任何錯誤捕獲塊。
嘗試將函數內容插入到try/catch
塊中
(function ($) {
$.ajaxSetup({ cache: false });
const ajax_dir = '/wp-content/plugins/oxygen-functions/assets/ajax/';
// SELECT LOCATION-SERVICE FORM
$('.serv-select select').html(select_vars.services_select);
$('.loc-select select').html(select_vars.locations_select);
$('.service-location-form')
.closest('form')
.submit(async function (e) {
e.preventDefault();
try {
$(this).find('.frm_message').addClass('d-none');
var form = $(this).serializeArray(),
service = form.find((x) => x['name'] == `item_meta[33]`).value,
loc = form.find((x) => x['name'] == `item_meta[34]`).value,
cat = loc + ',' + service,
posts = await $.ajax({
type: 'post',
async: true,
url: ajax_dir + 'posts-by-cat.php',
dataType: 'json',
data: {
post_type: 'services',
cat: cat,
},
}),
url = await $.ajax({
type: 'post',
async: true,
url: ajax_dir + 'post-link-id.php',
dataType: 'json',
data: {
id: posts[0],
},
});
//console.log(url);
location.href = url;
} catch(err) {
console.log(err);
// Handle error here. - maybe ajax fail
}
});
})(jQuery);
這是整個片段:
(function ($) {
$.ajaxSetup({ cache: false });
const ajax_dir = '/wp-content/plugins/oxygen-functions/assets/ajax/';
// SELECT LOCATION-SERVICE FORM
$('.serv-select select').html(select_vars.services_select);
$('.loc-select select').html(select_vars.locations_select);
var closestForm = $('.service-location-form').closest('form');
closestForm.submit(async function (e) {
e.preventDefault();
e.stopImmediatePropagation(); // <-- I fixed my issue with it
$(this).find('.frm_message').addClass('d-none');
var form = $(this).serializeArray();
var service = form.find((x) => x['name'] == `item_meta[33]`).value;
var loc = form.find((x) => x['name'] == `item_meta[34]`).value;
var cat = loc + ',' + service;
try {
var posts = await $.ajax({
type: 'post',
async: true, // true was a string
url: ajax_dir + 'posts-by-cat.php',
dataType: 'json',
data: {
post_type: 'services',
cat: cat,
},
});
} catch (safariError) {
console.error(safariError);
}
var url = await $.ajax({
type: 'post',
async: true, // also was 'true'
url: ajax_dir + 'post-link-id.php',
dataType: 'json',
data: {
id: posts[0],
},
});
//console.log(url);
location.href = url;
});
})(jQuery);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.