gpt4 book ai didi

php - 如何阻止 jQuery ajax 向 JSON 字符串添加斜杠?

转载 作者:可可西里 更新时间:2023-11-01 13:14:29 25 4
gpt4 key购买 nike

我正在将字符串化的 JSON 对象发送到 wordpress 操作

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 );

}
});

通过ajax发送之前字符串化对象的控制台日志是这样的

http://prntscr.com/7990ro

所以字符串被正确处理了,

但在另一边它出现了斜线

function _create_preset(){

if(!is_admin() && !isset($_POST['preset'])) return;

print_r($_POST['preset']);

}

add_action("wp_ajax_create_preset", "_create_preset");

给予

{\"get_presets\":\"eedewd\",\"site_width\":\"1400px\",\"layout_type\":...

我知道我可以用

stripslashes( $_POST['preset'] )

清理它,但这是我试图避免的。我需要将 JSON 字符串发送到操作,就像在 ajax 之前一样,没有斜杠。

感谢任何帮助!

魔术引号没有打开

http://prntscr.com/7996a9

*更新和解决方案

Jesse 搞定了,WP 造成了麻烦。由于 wp_unslash() 正在 5.0 中修复此问题 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/172我将此添加到我的代码中

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 ;
}

最佳答案

WordPress 很久以前就决定自动向所有全局输入变量($_POST 等)添加斜杠。他们通过内部 wp_slash() 函数传递它。官方推荐的删除这些斜杠的方法是使用他们提供的 wp_unslash:

wp_unslash( $_POST['preset'] );

Here is the codex reference.

**注:看起来像这样might be getting fixed in version 5.0 ,当您从全局输入变量请求值时,他们将为您执行 wp_unslash

关于php - 如何阻止 jQuery ajax 向 JSON 字符串添加斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com