Отказ от ответственности: я читал и искал довольно много.
Я создаю свои данные для отправки через AJAX следующим образом:
var plugin_data = [
plugin_action_button.attr('data-action-to-take'),
plugin_action_button.attr('data-plugin-slug')
];
requestPluginAction( JSON.stringify(plugin_data) );
Если я использую console.info, то это означает:
["activate","handle"]
Если мне нужно вернуть то, что видит PHP, вот что это:
[\"activate\",\"handle\"]
Теперь, запустив простой json_decode с этой строкой:
check_ajax_referer( 'plugin_routines', 'security' );
$data = sanitize_text_field( $_POST['plugin_install_request_data'] );
wp_send_json( json_decode( $data ) );
Возвращает null.
Много чего перепробовала. json_decode с установленным true, просто возвращая нефильтрованное значение, полученное от AJAX, и т. д.
Но никто не работает.
В конечном итоге я хочу преобразовать этот JSON в массив PHP.
@ Script47 Имеет смысл, но я все еще не вижу решения.
Я не думаю, что вам нужен sanitize_text_field() для данных JSON. В вашем экземпляре PHP включены магические кавычки?
Не видя всего вашего кода, это может быть функция дезинфекции, которая может вызывать его, но, опять же, это всего лишь предположение.
Я почти уверен, что Фил прав. Не дезинфицируйте данные перед их отправкой или обработкой.
@ Фил: Отвратительно. Это сработало. Ага, это было правильно. Огромное спасибо. Не пишите код в 6 утра.
@coolpasta Вау, у вас должна быть очень старая версия PHP. magic_quotes_gpc не является допустимой конфигурацией с PHP 5.3.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)

