表单帖子中有用户编写的“%10”-json_decode()失败,出现urldecode()

时间:2018-10-06 04:19:30

标签: php json ajax jsondecoder

太好了,客户键入“ %10 ”而不是“ 10%

0_o

$PACKAGE_json_decode = json_decode(urldecode(($_POST['textarea']), true);

print_r($PACKAGE_json_decode); // LENGTH 0


foreach($PACKAGE_json_decode as $row){
}

错误: “消息:为foreach()提供了无效的参数”

通过AJAX发送回去时,如何在不使%10产生其他含义的情况下进行网址解码?

解码似乎会产生方形字符,我无法在此处粘贴...您知道...看起来有点像“ []”

*当客户端取回字符串时,该字符串必须与客户端相同-他们将其保存为%,而希望将其保存为%。 -关于更换它的任何建议吗?

3 个答案:

答案 0 :(得分:1)

您可以直接编码由Ajax发送的请求,如下所示:

$.ajax({
    type:'POST',
    dataType: 'json',
    ...

或者这样:

JSON.stringify('%10');

现在在json_decode()内部的PHP中,如下所示。

$PACKAGE_json_decode = json_decode($_POST['textarea']);

像这样,您的%10将变成"%10",等等!

答案 1 :(得分:1)

URL encoding中使用%字符。您可以先将%从前端删除,然后再传递给服务器,或者在服务器端进行处理。

答案 2 :(得分:0)

请使用以下代码,让我知道它在哪里?

<?php

    $url_encode = urldecode("sampleTextWith%");
    echo '<b>Ecoded URL </b>'. $url_encode."<br>";

    $obj = new StdClass();
    $obj->text = $url_encode;

    $encoded_json = json_encode($obj);
    echo '<b>Encoded JSON </b>'. $encoded_json."<br>";

    $decoded_json = json_decode($encoded_json);

    echo "<b>Decoded JSON </b>";

    print_r($decoded_json);

    echo "<br>";

    foreach($decoded_json as $row){
        echo "<b>Row Value : </b>". $row."<br>";
    }

?>