jQueryAjaxを介してJSONとしてサーバーにデータを投稿する際に大きな問題が発生しました。JSLintは、データに問題がなく、リクエストのContent-Typeがに設定されていると言いますapplication/x-www-form-urlencoded; charset=UTF-8
。サーバーはPHP5.2.11で実行されているため、使用できませんjson_last_error()
。
url_decode、utf8_decode、html_entities_decodeを試しましたが、何も機能しないようです。
var_dump(json_decode($jdata));
nullを返しますが、var_dump($jdata)
すべてを実行すると問題ないように見えます。$jdata
投稿データです:$jdata = $this->input->post('requestdata');
。
ここに、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"
}
]
}
編集:
私は今これを試しました:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = json_decode($json);
var_dump($json);
結果は次のとおりです。
string(338) "{" projectnumber ":" 4444 "、" projecdescription ":" 4444 "、" articles ":[{" position ":1、" article_id ":676、" online_text ":"###Behälter; バンドI-IIInachindiv。Stückliste、Sprache:DE-Sprache:de "}、{" position ":2、" article_id ":681、" online_text ":"###Behälter; バンドI-IIInachindiv。Stückliste、Sprache:###-Sprache:en "}]}" NULL
JSON文字列をPHPソースに直接貼り付けることで機能しますが、投稿から取得することはできません。