我使用WP Rest API插件和ACF to REST API插件以及高級自定義字段。我有一個轉發器設置了2個複選框和一個文本框。我可以通過提交按鈕更新數據庫中的複選框,但希望能夠通過ajax進行更新,因此當用戶更改複選框時,它將在數據庫中更新。我覺得我錯過了一些基本的改變,但沒有發生。我沒有收到任何錯誤,但數據庫沒有更新。當我console.log數據時,我看到了所有的東西。這是我第一次去阿賈克斯,我覺得我真的很接近!通過ajax更新WordPress JSON數據
HTML:
<form id="todo-form">
<div class="todos-list"></div>
</form>
<script>
var post_id = '<?php echo the_ID(); ?>';
</script>
的jQuery:
var ajaxURL = 'http://'+window.location.host+'/wp-json/wp/v2/client/'+post_id;
$.getJSON(ajaxURL, function(data) {
console.log(data);
var output = '<ul class="todo-list">;
$.each(data.acf.todo_list, function(key, val){
if(data.acf.todo_list[key].todo_checkbox == true)
checked = 'checked';
} else {
checked = '';
}
output += '<li>';
output += '<input type="checkbox" class="todo-checkbox check" name="fields[todo_list]['+ key +'][todo_checkbox]" value="1" '+checked+' />';
output += '<input type="checkbox" class="todo-checkbox hide" name="fields[todo_list]['+ key +'][todo_checkbox]" value="0" />';
output += '<textarea name="fields[todo_list]['+ key +'][todo_item]">'+ data.acf.todo_list[key].todo_item +'</textarea>';
output += '</li>';
});
output += '</tbody></table>';
$('.todos-list').html(output);
//AJAX
var form = "#todo-form";
$(form).change(function(event) {
event.preventDefault();
var formData = JSON.stringify(data.acf.todo_list);
$.ajax({
type:'POST',
url: ajaxURL,
dataType : 'json',
data: formData,
beforeSend: function (xhr) {
xhr.setRequestHeader('X-WP-Nonce', WP_API_Settings.nonce);
},
success: function(){
console.log('success');
},
error: function(){
console.log('error');
},
});
});
的ACF以REST API插件做到這一點對我來說。端點是可讀和可編輯的(https://github.com/airesvsg/acf-to-rest-api)。我一直傾向於在我的ajax中沒有做正確的事情。 – Jason