【问题标题】:Why json_decode return NULL with hash symbol为什么 json_decode 返回带有哈希符号的 NULL
【发布时间】:2016-09-07 13:14:19
【问题描述】:

使用$.post将数组从JS发送到PHP文件:

    $.ajax({
        url: window.location + "crawler/",
        type: "POST",
        dataType: "json",
        data: {
            wartosc: zmienna
        },
        success: function (odp) {
            tab = JSON.stringify(odp);
            $.post(window.location + "crawler/return_data",
                {
                    data: tab  //tab->array
                },
                function (data) {
                    $('#wynik').html(data);
                    $('.pobierz').show();
                }
            )
        }
    })

在 PHP 中使用 json_decode() 之前使用 var_dump($_POST['data']); 数组如下所示:

string(612) "[{"Nazwa":"http://wp.pl/","Adres IP":"212.77.98.9","Kod odpowiedzi":301,"Roboty":"-","Tytul":"-","Slowa kluczowe":"-","Opis":"-"},{"Nazwa":"http://www.wp.pl/","Adres IP":"212.77.98.9","Kod odpowiedzi":200,"Roboty":"index,follow","Tytul":"Wirtualna Polska - Wszystko co ważne - www.wp.pl","Slowa kluczowe":"wp.pl, WP, Wirtualna Polska, Pogoda, Wiadomości, Newsy, Informacje, Sport, Finanse, Rozrywka, Program, Telewizja, #dziejesiewpolsce","Opis":"Nowoczesne medium, porządkuje świat i dostarcza angażujące informacje, rozrywkę i usługi w czasie rzeczywistym. Przewodnik Polaków w wirtualnym świecie."}]" 

一切都很好,但是当使用这个(不能使用 AJAX)将此数组发送到另一个 PHP 脚本时:

window.location.href = window.location + "crawler/save_to_csv?data=" + tab;

然后尝试var_dump($_GET['data']); 返回:

string(422) "[{"Nazwa":"http://wp.pl/","Adres IP":"212.77.98.9","Kod odpowiedzi":301,"Roboty":"-","Tytul":"-","Slowa kluczowe":"-","Opis":"-"},{"Nazwa":"http://www.wp.pl/","Adres IP":"212.77.98.9","Kod odpowiedzi":200,"Roboty":"index,follow","Tytul":"Wirtualna Polska - Wszystko co ważne - www.wp.pl","Slowa kluczowe":"wp.pl, WP, Wirtualna Polska, Pogoda, Wiadomości, Newsy, Informacje, Sport, Finanse, Rozrywka, Program, Telewizja, " 

字符串剪切为“#”符号,如果从 url 字符串中删除此哈希:

'#dziejesiewpolsce'

一切都很完美,但我需要井号。如何做到这一点?

谢谢

【问题讨论】:

  • 如果您想在后端编码字符,请尝试 rawurlencode()

标签: javascript php get


【解决方案1】:

您需要正确编码您的值以便在 url 中使用。

在javascript中:

... + "crawler/save_to_csv?data=" + encodeURIComponent(tab);

【讨论】:

    【解决方案2】:

    如果您的数据始终采用类似的格式并且只有当主题标签是唯一的问题(而不是其他字符)时,请尝试以下操作:

    $hashtagEncodedData = str_replace("#", "%23", $_POST['data']);
    
    $json = json_decode($hashtagEncodedData);
    

    然后在接收此数据的脚本中(另一个 PHP 脚本):

    $decodedData = rawurldecode($_GET['data']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多