1

私は、.ajaxオンライン チュートリアルで jquery を学ぼうとしている初心者です。

私のローカルホストの「クライアント」には次のコードがあります。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
    <script> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            $("#submit_btn").click(function(){
                $.ajax({
                      type: "POST",
                      url: "response.php",
                      dataType: 'json',
                      data: { name: "John", location: "Boston" }
                }).done(function( msg ) 
                {
                  alert( "Data Saved: " + msg );
                });
            });
        }); 
    </script> 
</head>
<body>
    <input type="submit" name="submit" class="button" id="submit_btn" value="Send" /> 
</body>
</html>

そして、「response.php」と呼ばれる「サーバー」側のファイルに次のコードがあります。

<?php
if (isset($_POST))
{
$answer = $_POST;
echo json_encode($answer);
}  else {
echo json_encode("no good");
}
?>

「送信」ボタンをクリックすると、「データが保存されました: [オブジェクト オブジェクト]」というアラートが表示されます。クリックイベントを使用して「投稿」経由で送信されたデータを表示するアラートを取得しようとしています。アラートに「名前: "ジョン"、場所: "ボストン"」と表示させたい。

4

1 に答える 1

2

"Data Saved: " + msg.name + " " + msg.location

あなたが受け取るのはJSONオブジェクトなので、オブジェクトをjavascript印刷します[object Object].名前と場所を取得するには、(ドット) 演算子を使用してオブジェクトのプロパティにアクセスする必要があります。

レスポンスが次の JSON オブジェクトであるとします。

msg = { name : "John", last_name : "Doe" }

nameオブジェクトのプロパティにアクセスするには、msgドット演算子を使用します。

console.log(msg.name);

コードを汎用的にするには、リクエストが成功したか失敗したかを何らかの方法でクライアントに伝えることができる必要があります。したがって、次のように送り返すことができますstatus

<?php
if (isset($_POST))
{
$answer = $_POST;
$answer['status'] = true;
echo json_encode($answer);
}  else {
echo json_encode(array('status' => false, 'msg' => 'no good'));
}
?>

クライアントでは、次を確認する必要がありますstatus

function(response) {
  if (response.status) {
    console.log('yep, post was submitted, name is ' + response.name + ', location is ' + response.location);
  }
  else {
    console.log('something went wrong: ' + response.msg);
  }
}

更新

もう 1 つ: を使用すると決めたらJSON、返送しないでくださいtext/plain。これはまさにあなたがここでやっていることです:

echo json_encode("no good");

このコード aは、有効なオブジェクトではない文字列"no good"を生成します。text/plainJSON

Take a look at what JSON is

于 2013-04-22T03:33:31.910 に答える