0

データ アクセスに JSON を多用する HTML5 アプリケーションを構築しようとしています。いくつかの例では、(JavaScript と JQuery を使用して) getJSON オブジェクトを使用して、JSON オブジェクトを PHP ページに投稿したいと考えています。次に、その PHP ページは JSON オブジェクトを取得し、いくつかのビジネス ロジックを実行してから、別の JSON オブジェクトを呼び出しページに返します。

呼び出しページに返される有効な JSON オブジェクトを取得できますが、元の要求で渡した JSON オブジェクトを取得できないようです。$_GET、$_POST、およびその他のいくつかのオプションを試しました。すべて役に立たない。

これが元のページの私のコードです。これは非常に単純です。ユーザーがボタンをクリックすると、JSON オブジェクトを receive_jason.php というページに渡す AJAX 呼び出しを実行します。このページは、渡された JSON オブジェクトを評価し、別の JSON オブジェクトを元のページに返すことになっています。

ページ1:

<html lang="en">
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>

<script type="text/javascript">
function StartPost()
{
var strJSON = '{"id":"3","artist":"The Beatles","alblum":"White Alblum"}';
var jsonURL = "receive_json.php";

$.getJSON(  jsonURL, 
            strJSON, 
            function(data) {
                var items = [];

                responseMsg     = data["success"];
                alert(responseMsg);

    });

}

</script>

<body>
     <input type="button" name="Post Data" value="Post Data" onClick="StartPost();">
</body>

</html>

そして、これが receive_json.php ページの PHP コードです...

<?php
    $incomingData = $_GET['artist'];
    $myText =(string) $incomingData;
    echo "{\"success\":\"" . strlen($myText) . "\"}";
?>

明確にするために、getJSON 呼び出しは機能し、戻り時に有効な JSON 呼び出しを受け取ります。しかし、渡した JSON オブジェクトにアクセスできません。

私の質問....

1) これは私が修正できる単純な構文エラーですか?

2) getJSON はこのタスクに適した機能ですか?

3) getJSON リクエストを簡単にデバッグして、ページで何が起こっているかを確認する方法はありますか?

4

2 に答える 2

1

$.getJSONGET リクエストを送信します。

$.ajaxと を併用する必要がmethod: "POST"ありtype: "json"ます。

于 2012-07-06T18:32:17.373 に答える
1

次のようなものを使用します。

$.ajax({
                url: "yourfile_orserverfile.php",
                type: "POST",
                data: {
                  //whatever your data is
                }
                datatype: "json",
                success: function (status) {
                    if (status.success == false) {
                        //alert a failure message
                    } else {
                        //alert a success message
                    }
                }
            });
于 2012-07-10T12:20:51.190 に答える