Tôi gửi đối tượng JSON chuyển đổi thành chuỗi đến một hành động wordpressLàm thế nào để ngăn chặn jQuery ajax thêm các dấu gạch chéo vào chuỗi JSON?
console.log(JSON.stringify(alloptions));
$.ajax({
type: "post",
dataType: "json",
url: ajaxurl,
processData: false,
data: {
'action': 'create_preset',
'preset': JSON.stringify(alloptions)
},
success: function(response) {
console.log(response);
}
});
console log của đối tượng chuyển đổi thành chuỗi trước khi gửi qua ajax là này
nên chuỗi được xử lý một cách chính xác,
nhưng ở phía bên kia nó xuất hiện với dấu gạch chéo
function _create_preset(){
if(!is_admin() && !isset($_POST['preset'])) return;
print_r($_POST['preset']);
}
add_action("wp_ajax_create_preset", "_create_preset");
cho
{\"get_presets\":\"eedewd\",\"site_width\":\"1400px\",\"layout_type\":...
Tôi biết tôi có thể sử dụng
stripslashes($_POST['preset'])
để làm sạch nó lên nhưng đó là những gì tôi đang cố gắng để tránh. Tôi cần chuỗi JSON được gửi đến hành động vì nó là trước ajax, không có dấu gạch chéo.
bất kỳ trợ giúp nào được đánh giá cao!
và báo giá ảo thuật không phải là trên
* CẬP NHẬT VÀ GIẢI PHÁP
Jesse đóng đinh nó và WP đã gây ra rắc rối. Kể từ khi wp_unslash()
đang trên đường để sửa lỗi này trong 5,0 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/172 tôi thêm này để mã của tôi
global $wp_version;
$new_preset_options = $_POST['preset'];
if (version_compare($wp_version, '5.0', '<')) {
$new_preset_content = wp_unslash($new_preset_options);
}else{
$new_preset_content = $new_preset_options ;
}
brrrrrrrr, có vẻ như dấu ngoặc kép ma thuật: http://php.net/manual/en/security.magicquotes.what.php – jeroen
@jeroen no is, http://prntscr.com/7996a9 – Benn
Dường như bạn đúng, nhưng bạn có thể xác nhận rằng kiểm tra giá trị của 'get_magic_quotes_gpc()'? – jeroen