json_encode,json.parse丢弃一个'+'性格

json_encode, json.parse dropping a '+' character?

本文关键字:json 一个 #39+ 性格 encode parse      更新时间:2023-09-26

一个快速问题

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调用成功中作为"数据"返回

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

我在支付过程中重新授权

 $decoded = json_decode($_POST['data']);
 $parametersToPass['cavv'] = $decoded->cavv;

此时cavv值为jFvMUENpUEzLARAQBtmeh Q5o/U=,而不是jFvMuENpUEz LARAQBtmeh+Q5o/U=(空格而非a+)

我该怎么解决?

否,json_decodeJSON.parse都尊重+字符。

然而,在URL中,如果+没有正确地URL编码为%2B,它就会变成一个空间。。。因此,如果你是json_decode正在使用$_GET参数,这可能就是发生的事情。

尝试用AJAX以正确的JSON格式发布数据?

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

}