Tôi gặp vấn đề lớn khi đăng dữ liệu qua jQuery Ajax dưới dạng JSON tới Máy chủ của tôi. JSLint nói rằng dữ liệu là OK và Content-Type của yêu cầu được đặt thành application/x-www-form-urlencoded; charset=UTF-8
. Máy chủ chạy trên PHP 5.2.11 vì vậy tôi không thể sử dụng json_last_error()
.Json_decode với các ký tự đặc biệt
Tôi đã thử url_decode, utf8_decode và html_entities_decode, nhưng không có gì có vẻ hiệu quả.
var_dump(json_decode($jdata));
trả về giá trị rỗng, nhưng nếu tôi làm var_dump($jdata)
mọi thứ đều OK. $jdata
là dữ liệu bài đăng: $jdata = $this->input->post('requestdata');
.
Dưới đây một số dữ liệu ví dụ bài lấy từ 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:
tôi đã cố gắng này ngay bây giờ:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = json_decode($json);
var_dump($json);
Kết quả là:
string (338) "{" projectnumber ":" 4444 "," projecdescription ":" 4444 "," bài viết ": [{" vị trí ": 1," article_id ": 676," online_text ":" ### Behälter; Ban nhạc I-III nach indiv. Stückliste, Sprache: DE - Sprache: de "}, {" vị trí ": 2," article_id ": 681," online_text ":" ### Behälter; Ban nhạc I-III nach indiv. Stückliste, Sprache: ### - Sprache: en "}]}" NULL
Bằng cách dán chuỗi JSON đạo vào nguồn PHP nó hoạt động, nhưng nhận được nó từ bài không!
Điều này sẽ làm việc cho bạn: http://stackoverflow.com/ a/12884807/1226894 – Baba
có thể trùng lặp của [json \ _decode trả về null trong php] (http://stackoverflow.com/questions/12884802/json-decode-is-returning-null-in-php) – Baba
Bạn có chắc chắn không rằng bạn có một chuỗi UTF8 ở phía máy chủ? Hãy thử 'var_dump (json_decode (utf8_encode ($ jdata)));' – ThiefMaster