2016-09-07 114 views
2

使用$.post爲什麼json_decode返回NULL從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(); 
       } 
      ) 
     } 
    }) 

使用json_decode()前在PHP中使用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'

所有完美的作品,但我需要哈希符號。這個怎麼做?

謝謝

+0

嘗試rawurlencode()如果你想在後端編碼字符 –

回答

3

您需要正確編碼您的值以便在網址中使用。

在javascript中:

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

太棒了!謝謝 – Marcin

0

如果您的數據始終類似格式化且僅當主題標籤是唯一的問題(而不是其他字符)試試這個:

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

$json = json_decode($hashtagEncodedData); 
腳本

然後接收這個數據(另一個PHP腳本):

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