Я разработал расширение chrome, которое извлекает некоторые данные со страницы посещения пользователя, и я хочу передать их в свою базу данных с помощью вызова AJAX (мой веб-сайт - базовый c WordPress-сайт).
Дело в том, что ответ ajax - это ошибка 400, и я не понимаю, в чем проблема, поскольку я пытался изменить мой запрос ajax как можно лучше.
Вот мой AJAX запрос из содержимого. js
/* Popup clicked */
$('#myOwnCustomToolBar_TT91 #message_to_click form.groupio_form #subscribe').on('click', function(){
//chrome.runtime.sendMessage(product_infos);
jQuery.ajax({
type:"POST",
url: "https://www.groupio.fr/wp-admin/admin-ajax.php",
contentType: 'application/json',
dataType: "JSON",
responseType:'application/json',
data: {
action : "itempricingfunction",
ean : "EANTEST0101010"
},
crossDomain:true,
success:function(data){
alert(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});
Вот моя функция, называемая itempricingfunction внутри функций. php Файл моего файла WordPress темы
function itempricingfunction(){
$product_ean = (isset($_POST['ean'])) ? htmlentities($_POST['ean']) : NULL;
echo json_encode(array('product_ean' =>$product_ean));
exit;
}
add_action("wp_ajax_nopriv_itempricingfunction", "itempricingfunction");
add_action("wp_ajax_itempricingfunction", "itempricingfunction");
И, наконец, когда я go на страницу продукта и нажмите на расширение chrome, ответ на вызов ajax - Ошибка 400 (см. Изображение ниже):
[AJAX Ответ из Wordpress] [ 1]
Большое спасибо за помощь!
РЕДАКТИРОВАТЬ после попытки переместить ajax вызов в фоновый режим. js:
Манифест. json
{
"manifest_version": 2,
"name": "XXXX Extension",
"version": "1.0",
"description": "The best extension for my friends",
"icons":{
"128" : "images/icon128.png",
"48" : "images/icon48.png",
"16" : "images/icon16.png"
},
"background": {
"scripts": ["js/jquery-3.4.1.min.js", "js/background.js"]
},
"permissions": [
"contextMenus",
"activeTab",
"tabs",
"notifications",
"https://www.groupio.fr/"
],
"content_scripts": [
{
"matches": ["https://www.rddddd.fr/produit/*"],
"css": ["css/extension_style.css"],
"js": ["js/jquery-3.4.1.min.js", "js/content.js"]
}
],
"browser_action": {
"default_icon": "images/icon16.png",
"default_title": "Tayfun Extension",
"default_popup": "popup.html"
},
"web_accessible_resources": [
"toolbar.html",
"css/extension_style.css",
"images/logo_extension.png",
"images/rollback_arrow.png"
]
}
Вот новый контент. js файл:
/* Popup clicked */
$('#myOwnCustomToolBar_TT91 #message_to_click form.groupio_form #subscribe').on('click', function(){
chrome.runtime.sendMessage(product_infos);
});
Вот новый фон. js файл:
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
jQuery.ajax({
type:"POST",
url: "https://www.groupio.fr/wp-admin/admin-ajax.php",
contentType: 'json',
dataType: "JSON",
responseType:'json',
data: {
action : "itempricingfunction",
ean : "EANTEST0101010"
},
success:function(data){
alert(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});