Mam duży problem z publikowaniem danych za pośrednictwem jQuery Ajax jako JSON na moim serwerze. JSLint twierdzi, że dane są prawidłowe, a typ zawartości żądania jest ustawiony na application/x-www-form-urlencoded; charset=UTF-8
. Serwer działa na PHP 5.2.11, więc nie mogę używać json_last_error()
.Json_decode ze specjalnymi znakami
Próbowałem url_decode, utf8_decode i html_entities_decode, ale nic nie działa.
var_dump(json_decode($jdata));
zwraca zero, ale jeśli zrobię var_dump($jdata)
wszystko wygląda OK. $jdata
to dane o wpisie: $jdata = $this->input->post('requestdata');
.
Oto niektóre dane przykładowy post chwycić z Firebug:
{
"projectnumber": "345",
"projecdescription": "345",
"articles": [
{
"position": 1,
"article_id": 677,
"online_text": "3 Behälter; Band I-III nach indiv. Stückliste, Sprache: DE - Sprache: de"
},
{
"position": 2,
"article_id": 678,
"online_text": "2 Behälter; Band I-III nach indiv. Stückliste, Sprache: ### - Sprache: en"
}
]
}
Edit:
Próbowałem to teraz:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = json_decode($json);
var_dump($json);
Wynikiem jest:
string (338) "{" numer_projektu ":" 4444 "," opis projektu ":" 4444 "," articles ": [{" position ": 1," article_id ": 676," online_text ":" ### Behälter; Zespół I-III nach indiv. Stückliste, Sprache: DE - Sprache: de "}, {" position ": 2," article_id ": 681," online_text ":" ### Behälter; Zespół I-III nach indiv. Stückliste, Sprache: ### - Sprache: en "}]}" NULL
wklejając ciąg JSON kierować do źródła PHP to działa, ale coraz to z nie słupek!
To będzie pracować dla Ciebie: http://stackoverflow.com/ a/12884807/1226894 – Baba
możliwy duplikat [json \ _decode zwraca null w php] (http://stackoverflow.com/questions/12884802/json-decode-is-returning-null-in-php) – Baba
Czy jesteś pewien? że masz ciąg znaków UTF8 po stronie serwera? Spróbuj 'var_dump (json_decode (utf8_encode ($ jdata)));' – ThiefMaster