简体   繁体   English

访问JSON中的嵌套对象(密钥对/ MYSQL数组)

[英]Accessing Nested Objects in JSON (Key Pairs/MYSQL Array)

I have a mysql query create this output for my json data. 我有一个mysql查询,为我的json数据创建此输出。 I have not been able to figure out how to access the properties within this output however. 但是,我无法弄清楚如何访问此输出中的属性。

I have tried using data.objA which returns undefined and objA][0] and am at a loss. 我尝试使用data.objA,它返回未定义的值和objA] [0],很茫然。 Any assistance would be greatly appreciated. 任何帮助将不胜感激。

JSON JSON格式

({"objA":"yes","objB":[{"username":"ah2122","client_password":"288c0e42ab41faef3d1015e6fc299644","client_id":"36"}]})

PHP 的PHP

<?php
include 'init.php';

//get the posted values
$user_name=htmlspecialchars($_POST['client_username'],ENT_QUOTES);
$pass=md5($_POST['client_password']); 


//now validating the username and password
$sql="SELECT username, client_password, client_id FROM clients WHERE username='".$user_name."'";

    $result = mysql_query($sql);
        while($row = mysql_fetch_array($result))
        {   
             $rows[] = array(
            "username" => $row['username'],
            "client_password" => $row['client_password'],
            "client_id" => $row['client_id']);
        }

        //if username exists
        if(mysql_num_rows($result)>0)
        {
            //compare the password
            if(strcmp($rows[0]['client_password'],$pass)==0)
            {
                $SUCCESS="yes";
             }
             else
            $SUCCESS="no";
            }
            else
              $SUCCESS="no";  //Invalid Login


$rows2 = array( 'objA' => $SUCCESS, 'objB' => $rows );

$json = json_encode($rows2);

$callback = $_GET['callback'];
echo $callback.'('. $json . ')';    

    ?>

SCRIPT 脚本

$(document).ready(function()
{
    $("#client_login_form").submit(function()
    {
        //remove all the class add the messagebox classes and start fading
        $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
        //check the username exists or not from ajax
        var cu = $("#client_username").val();
        var cp = $("#client_password").val();

        $.post("http://www.website.com/splash/cajax_login.php",{ client_username:cu,client_password:cp,rand:Math.random() } ,function(data)
        {            
          if(data.objA=='yes') //if correct login detail
          {
            $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1,
              function()
              { 
                window.localStorage["cusername"] = cu;
                window.localStorage["cpassword"] = cp;  

                //redirect to secure page
                document.location="#client_home";
              });

            });
          }
          else 
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Login Failed').addClass('messageboxerror').fadeTo(900,1);
            });     
          }

        });
        return false; //not to post the  form physically
    });
    //now call the ajax also focus move from 
    $("#client_password").blur(function()
    {
        $("#client_login_form").trigger('client_submit');
    });

This is probably the one giving you data.objA undefined 这可能是给您data.objA的对象

echo $callback.'('. $json . ')';

Change to 改成

   echo $json;

This should send back just the json object instead of prepending it with $callback. 这应该只发送回json对象,而不是在其前面加上$ callback。

Try to change this code 尝试更改此代码

$callback = $_GET['callback'];
echo $callback.'('. $json . ')';

to

if(isset($_GET['callback'])) {
    echo $_GET['callback'].'('. $json . ')';
} else {
    echo $json;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM