转义json在php中读取为数组

时间:2011-12-01 04:39:06

标签: php jquery ajax json

我现在被困在这个安静的时候。 所有我想做的是发送一个json文本到PHP,处理它并发送响应bacl ..

这是我发送的数据作为我的textarea值..

**asdasd #$**&**%^*( AAAA SADQWEASD /// '' \\\ '' l; "" **

下面是json发送到php(从控制台获取):

data={"Text":"asdasd #$&%^*( AAAA SADQWEASD /// '' \\\\\\ '' l; \"\" "}

我正在使用jquery ajax函数,如下所示:

    function ajaxfunc(data, path){
        $.ajax({
            type: "POST",
            url: path, 
            data: 'data='+data, 
            success: function(response){
            }
        });
    }
在PHP中,我正在这样做。

$res = json_decode(stripslashes(escapeJsonString($_POST['feed'])), true);

function escapeJsonString($value) { 
    # list from www.json.org: (\b backspace, \f formfeed)

    $search = array("\n", "\r", "\u", "\t", "\f", "\b", "/", '"');
    $replace = array("\\n", "\\r", "\\u", "\\t", "\\f", "\\b", "\/", "\"");
    $result = str_replace($search, $replace, $value);

    $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); 
    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); 
    $result = str_replace($escapers, $replacements, $value); 

    return $result; 
}

echo $res["Text"];

问题是:& ..没有在PHP解析,因此响应为空.. 我也想确定,检测到新行字符。基本上我期待使用json的“WYSIWYG”.. json_encode和json_decode

2 个答案:

答案 0 :(得分:1)

基于关于只想将表单输入发送到服务器的注释,请按以下方式使用serialize():

$.ajax({
    type: "POST",
    url: path, 
    data: $('form').serialize(), 
    success: function(response){
    }
);

如果您只想通过$ _POST数组访问服务器上的表单输入,那么在客户端上转换为JSON是一种浪费。 serialize()应该适合你。

但是如果你真的想要使用JSON,那么请使用Douglas Crockford {J}的JSON-js lib here。请注意,此主题还有很多其他信息:Serializing to JSON in jQuery。示例如下:

$.ajax({
    type: "POST",
    url: path, 
    data: 'data='+( JSON.stringify(data) ), 
    success: function(response){
    }
);

答案 1 :(得分:0)

如果您想以JSON格式发送数据,可以试试这个

data =  {"Text":"asdasd #$&%^*( AAAA SADQWEASD /// '' \\\\\\ '' l; \"\" "};
data =  JSON.stringify(data);

然后使用您的jquery.ajax或jquery.post

发送