Я успешно создал метаполе клиента: customer.metafields.c_f.proxy
Цель - разрешить клиенту (при входе в систему) из шаблона account.liquid
редактировать значение метаполя с помощью формы.Я пытаюсь использовать некоторые jquery и Metafield API к POST
изменению от пользователя:
<form action="/admin/customers/{{ customer.id }}/metafields.json" method="POST" id="custmeta">
<input type="hidden" name="customer[id]" value="{{ customer.id }}" />
<input type="text" name="metafield[c_f.proxy]" value="{{ customer.metafields.c_f.proxy }}" placeholder="{{ customer.metafields.c_f.proxy }}" />
<input type="submit" value="Edit"/>
</form>
<script>
$('form#custmeta').submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
dataType: "json",
data: $(this).serialize(),
url: $(this).attr('action'),
success: function (data) {
var formValid = (data.status === 'OK');
if (formValid) {
var msgs = '';
for (var i=0;i<data.messages.length;i++) {
msgs += '-- ' + data.messages[i] + '\n';
}
if (msgs > '') {
alert('SUCCESS WITH MESSAGES:\n\n' + msgs);
}
else {
alert('SUCCESS!');
}
}
else {
alert('Status: ' + data.status + '\nMessage: ' + data.message);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('AJAX or Server 500 error occurred');
}
});
return false;
});
</script>
В настоящий момент произошла ошибка AJAX или Server 500.
Изменить, чтобы включить ответ с другого форума:
то, что вы делаете, не будет работать.Вы отправляете данные со страницы в API через JS в браузере.Вы будете отправлять куки в этом запросе.Любой запрос на обновление / добавление данных будет заблокирован, если он содержит файлы cookie.