0

JSON 出力に問題があります。次のような ajax 投稿を作成しました。

function sign_up(form_data)
{
        $.ajax({
        url: "signup_process.php", //target
        data: {userdata:JSON.stringify(form_data)}, 
        type: "POST", //metode pengiriman
        dataType: "json", //return data type

    }).done(function(data) {
        console.log(data);
    }).fail(function(data, errorThrown, textStatus, jqXHR){
        console.log(textStatus);

    });
}

次に、サーバー側で処理します。

$data = json_decode($_POST['userdata'], true);
echo json_encode($_POST['userdata']);die();

私のローカルサーバーでは、スムーズに実行され、次のような目的の出力が表示されます。

{"email":"myemail@gmail.com","browser_agent":"chrome","browser_version":"30.0.1599.69","os":"win","device":"PC/Laptop/non-mobile-device","latitude":-6.211544,"longitude":106.84517199999999,"location":"Padang, Setiabudi, South Jakarta City, Jakarta 12850, Indonesia","ip":"139.xxx.xxx.xxx"} 

しかし、ライブWebサーバーにアップロードすると、結果は次のようになりました(非常に多くのバックスラッシュ)。そして、それが私のコード全体を壊したことがわかりました:

{\"email\":\"myemail@gmail.com\",\"browser_agent\":\"chrome\",\"browser_version\":\"30.0.1599.69\",\"os\":\"win\",\"device\":\"PC/Laptop/non-mobile-device\",\"latitude\":-6.211544,\"longitude\":106.84517199999999,\"location\":\"Padang, Setiabudi, South Jakarta City, Jakarta 12850, Indonesia\",\"ip\":\"139.xxx.xxx.xxx\"}

私のローカルのコードはホストサーバーのコードと100%同じであるため、実際に何が起こっているのかわかりません。どんな解決策でも大歓迎です。ありがとう

4

1 に答える 1

2

これを試して:

$data = json_decode(stripslashes($_POST['userdata']), true);
echo json_encode($_POST['userdata']);die();

問題はおそらくマジック クォートに関連しているか、この効果をシミュレートするシステム (WordPress など) を使用しています。

stripslashes入力からスラッシュを削除します。

于 2013-10-13T11:55:01.310 に答える