0

jQuery と PHP を一緒に使用する方法を学んでいます。初めての試みで、ほぼコンセプトが掴めた感じです。ただし、対処できなかった問題があります。JSON オブジェクトを PHP スクリプトに投稿し、パラメータの 1 つを返そうとすると、次のエラーが表示されます。「オブジェクト以外のプロパティを取得しようとしています ...」

index.html:

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-git2.js"></script>
        <meta charset=utf-8 />
        <title>JS Bin</title>
        <style id="jsbin-css"></style>
    </head>
    <body>
        <button onClick="postData();">Submit me!</button>
        <script>
            function postData() {
                var myData = {
                    'firstName' : 'John',
                    'lastName' : 'Doe'
                };   

                $.ajax( {
                    type: "POST",
                    url: "postData.php",
                    contentType: "application/json",
                    data: myData,
                    success: function(msg){ 
                        alert(msg);
                    },
                    error: function(err) {
                         alert('error!' + err);
                    }
                });
            }
        </script>
    </body>
</html>

postData.php:

<?php
    $input = file_get_contents('php://input');
    $jsonData = json_decode($input);    
    $output = $jsonData->{'firstName'};
    echo $output;
?>
4

4 に答える 4

1

もう少し作業をすれば、データ型の変換や URL の解析などを自動的に処理するRESTクライアントを使用して、これを実現できます。

REST アーキテクチャを使用する利点をいくつか挙げると、次のようになります。

  • 単純。

  • キャッシング、負荷分散などを使用して、ソリューションを簡単にスケーリングできます。

  • URL エンドポイントを論理的に分離できます。

  • クライアントを変更することなく、実装を簡単に変更できる柔軟性が得られます。

REST の簡単な紹介を読んで、設計パターンとその用途について理解を深めてください。もちろん、フレームワークをゼロから作成する必要はありません。Recess PHP Rest Frameworkなど、オープンソースの PHP ベースの実装が既にいくつか存在するためです。

お役に立てれば!

于 2013-08-13T18:09:51.827 に答える
0

json_decode(PHP のバージョンによって異なります) デフォルトでは、オブジェクトではなく配列が返されます。それにアクセスする適切な方法は次のとおりです。

$output = $jsonData['firstname'];

また、連想配列を返す必要があるためtrue、json_decode の 2 番目の引数として渡します。

$jsonData = json_decode($input, true);  

あるいは、JSON が無効である可能性があります。この場合、PHP は を返しますnull。それを確認できます:

if ($jsonData = json_decode($input, true) === null) {
    // Do stuff!
} else {
    // Invalid JSON :(
}
于 2013-08-13T17:34:38.787 に答える