Я пытаюсь создать расширение, которое добавляет 2 поля на страницу продукта администратора для покупки, чтобы добавить метафилд.Купить Расширение Chrome для администратора
Я знаю, что есть некоторые расширения, такие как ShopifyFD и CustomFields, но мой действительно, очень простой, я отнюдь не пытаюсь его скопировать, это очень обычай для моего магазина shopify.
Все, что я хочу, это добавить к странице 2 конкретных метафила и сохранить их, когда я нажму кнопку «Сохранить».
Это говорит, что все уже работает, но у меня проблема во время POST/PUT. Он сохраняет статус возврата '303 См. «Другое» и перенаправляет меня на логин, поведение, с которым я не сталкиваюсь ни с одним из двух расширений, которые я цитировал в начале. Я задаюсь вопросом, является ли подход, который я использую, проблемой или тем, что еще может быть, поэтому я располагаю ресурсами для вашей помощи.
здесь как заголовок выглядит следующим образом:
Request URL:https://mywebsite.myshopify.com/admin/products/461395295/metafields/9911129091.json
Request Method:PUT
Status Code:303 See Other
Remote Address:23.227.38.70:443
Как я уже говорил, я использовал другой подход, ShopifyFD или CustomFields, вместо загрузки сценария, я использую скрипт контента.
здесь, как мой манифест выглядеть:
"content_scripts": [
{
"all_frames": true,
"matches": [
"https://*.myshopify.com/admin/products/*"
],
"run_at": "document_end",
"js": [
"scripts/vendors/jquery.js",
"scripts/vendors/handlebars-v3.0.0.js",
"scripts/vendors/handlebars-helpers.js",
"scripts/utils.js",
"scripts/shopify-product-addon.js"
]
}
]
1 - я заменить текущую кнопку Сохранить на новый, так что я могу сохранить metafields перед отправкой нативной формы 2 - я прилагаю к POST/PUT метод новой кнопки Save я заменил
здесь, как мой пост/пут выглядит:
Примечание: запись значения я экономлю.
var metaJSON;
if (record.update) {
metaJSON = {
'metafield': {
'id': record.metafield_id,
'value': record.value,
'value_type': record.value_type
}
}
method = 'PUT';
url = '/admin/' + route_url + '/metafields/' + record.metafield_id + '.json';
} else {
metaJSON = {
'metafield': {
'namespace': record.namespace,
'key': record.key,
'value': record.value,
'value_type': record.value_type
}
};
url = '/admin/' + route_url + '/metafields.json';
method = 'POST';
}
$.ajax({
type: method,
url: url,
data: metaJSON,
dataType: 'json',
success: function(d) {
console.log('SUCCESS');
},
error: function(d) {
console.log('ERROR');
}
});
Проблема в том, что она терпит неудачу каждый раз. Интересно, что случилось. Является ли метод, который я использую?
Я занимаюсь почти так же, как ShopifyFD, когда вы отправляете/помещаете в ajax api, просто не знаете, чего не хватает. единственное различие, которое я нашел, это то, что в ShopifyFD есть файл cookie, установленный на request_method = PUT или request_method = POST. Я не знаю, как этот cookie установлен, потому что он не в скрипте. Я даже пытался установить его вручную, но он не работает.
Как вы можете видеть, я пробовал почти все.
Есть ли у кого-нибудь еще какие-либо предложения? : P
Благодаря