【发布时间】:2018-04-24 16:39:29
【问题描述】:
我已成功创建客户元字段: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 错误。
编辑以包含来自另一个论坛的答案:
你正在做的事情是行不通的。您正在通过浏览器中的 JS 将数据从页面发送到 API。您将在该请求中发送 cookie。如果包含 cookie,任何更新/添加数据的请求都将被阻止。
【问题讨论】:
标签: javascript jquery html shopify liquid