与哈希符号
问题描述:
使用$.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'
所有完美的作品,但我需要哈希符号。这个怎么做?
谢谢
答
您需要正确编码您的值以便在网址中使用。
在javascript中:
... + "crawler/save_to_csv?data=" + encodeURIComponent(tab);
+1
太棒了!谢谢 – Marcin
答
如果您的数据始终类似格式化且仅当主题标签是唯一的问题(而不是其他字符)试试这个:
$hashtagEncodedData = str_replace("#", "%23", $_POST['data']);
$json = json_decode($hashtagEncodedData);
脚本
然后接收这个数据(另一个PHP脚本):
$decodedData = rawurldecode($_GET['data']);
尝试rawurlencode()如果你想在后端编码字符 –