json_encode,json.parse丢一个'+'字符?

时间:2012-04-03 15:31:43

标签: php javascript json

一个简单的问题

php函数json_encode或js JSON.parse函数默认情况下会丢弃'+'字符吗?我肯定会在某个地方失去一个'+'而无法弄清楚在哪里。这是非常紧急的,因为它实际上是来自realex的xml源,它授权(或在这种情况下不授权)在我们的一个实时站点上付款。为了使事情变得更复杂,我现在无法使用开发环境,我无法在现场网站的屏幕上打印出值。所以我试图为开始做出猜测 -

好的,这里有一些例子

我从Realex获得一个值

   $RESPONSE_THREEDSECURE_CAVV = 'jFvMUENpUEzLARAQBtmeh+Q5o/U=';
   $parametersToPass['cavv'] = $RESPONSE_THREEDSECURE_CAVV;

在parametersToPass数组中有更多值,但这是引起麻烦的那个。 我用php编码它

   $encoded = json_encode($parametersToPass);
   die($encoded);

这在jquery ajax调用成功时返回为'data'

 success: function(data) {
    $.ajax({ 
      type: "POST",
      url: 'action/payment-process_auth.php',
      data: "data="+data
    });
  }

我在payment-process-auth

中解除了它
 $decoded = json_decode($_POST['data']);
 $parametersToPass['cavv'] = $decoded->cavv;

此时cavv值为jFvMUENpUEzLARAQBtmeh Q5o / U =而不是jFvMUENpUEzLARAQBtmeh + Q5o / U =(空格而不是+)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

不,json_decodeJSON.parse都尊重+个字符。

但是,在网址中,+如果没有正确地将其编码为%2B,则会转换为空格...所以,如果您json_decode $_GET {{1}}参数可能是正在发生的事情。

答案 1 :(得分:1)

尝试使用适当的JSON格式使用AJAX发布数据吗?

success: function(data) {
$.ajax({ 
  type: "POST",
  url: 'action/payment-process_auth.php',
  data: {"data": data}
});

}