1

私は AJAX 呼び出しを使用しており、JavaScript に送り返されるこの JSON オブジェクトを生成しています。JavaScript で受け取ったときに値を取得できません。

PHP:

echo json_encode(array("results" => array(array("user" => $member['user']),array("company" => $member['company']))));

JS:

success: function(response) 
    {
        for(var i = 0;i < response.results.length; i++)
        {   
          sessionStorage.setItem('user',response.results[i].user);
          sessionStorage.setItem('company',response.results[i].company);
        }
    }

受け取った応答から値を読み取ることができません。

私が受け取る応答は次の形式です。

{"results":[{"user":"David"},{"company":"something"}]}

この JSON オブジェクトを読み取る適切な方法は何でしょうか?

4

2 に答える 2

2

未定義の results[0].company および results[1].user にアクセスしようとしており、オブジェクトで定義されているのは results[1].company および results[0].user のみであるため、PHP を変更すると次のように、応答が単なる文字列でない限り、JavaScript は機能するはずです。

echo json_encode( array(
    "results" => array(
        array(
            "user" => $member['user'],
            "company" => $member['company']
        )
     )
));

応答が単なる文字列の場合は、JavaScript コードを次のように変更します。

success: function(response) 
{
    response = JSON.parse(response);

または

dataType: "json",
success: function(response) 
{
于 2013-08-15T19:58:24.197 に答える
0

JSON 応答では、結果に 2 つのオブジェクトを含む配列が含まれています。1 番目にはユーザーが含まれ、2 番目には会社が含まれます。ただし、 for ループでは、配列内の両方の要素にユーザーと会社の両方が含まれていると予想されます。1 人のユーザーとその会社だけを送信しようとしているようです。その場合、コードは次のようになります。

PHP:

echo json_encode(array("results" => array("user" => $member['user'],"company" => $member['company'])));

JS:

success: function(response) 
    {
        sessionStorage.setItem('user',response.results.user);
        sessionStorage.setItem('company',response.results.company);
    }

あなたの応答は次のようになります。

{"results":{"user":"David","company":"something"}}
于 2013-08-15T19:58:49.103 に答える