从javascript编码json和解码使用php


encode json from javascript and decode using php

我必须使用javascript编码成json字符串的电子邮件地址数组,并使用ajax发送到abc.php。在abc.php中,我必须解码它并将电子邮件发送到该数组中的所有地址。

目前我正在使用

将数组编码为json
var json_string = JSON.stringify(myarray);

在abc.php我解码它使用

$emails = json_decode($_POST['json_string']);
// json_string was passed as POST variable using ajax

但是打印时给出NULL。

我如何解码它并访问PHP文件中的个人电子邮件

如果您可以访问您的web服务器的php.ini,最好是禁用magic_quotes,因为它们已被弃用:

; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of '').
magic_quotes_sybase = Off

如果您没有服务器访问权限,请使用带有以下选项的.htaccess文件

php_flag magic_quotes_gpc Off

如果你不想使用它,最后剩下的就是使用unescape函数,比如

function ref_stripslashes(&$value,$key) {
    $value = stripslashes($value);
}
if((function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) || (ini_get('magic_quotes_sybase') && (strtolower(ini_get('magic_quotes_sybase'))!="off")) ) {
    array_walk_recursive($_GET,'ref_stripslashes');
    array_walk_recursive($_POST,'ref_stripslashes');
    array_walk_recursive($_COOKIE,'ref_stripslashes');
}

摘自php手册,Lucifer的注释

json_decode($_POST['json_string'])应该工作。