<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18813"></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=499400122-11082009>> when I just use data
it shows the JSON encoded data</SPAN><FONT color=#0000ff size=2
face=Verdana><SPAN class=499400122-11082009></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009>That's your problem right there. Your data variable
should <EM>not</EM> be "JSON encoded data" (which is a <STRONG>string</STRONG>).
It should be the actual JavaScript object.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009>Try console.log( typeof data ) to see what I'm talking
about.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009>Why are you getting a string instead of a JavaScript
object?</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009><FONT color=#000000 size=3
face="Times New Roman">
datatype:'json', //Return JSON encoded data</FONT><BR></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009>Take another look at the docs for the $.ajax
options, keeping in mind that JavaScript is case dependent. Also note that the
comment is misleading: encoded data is what you <EM>don't</EM> want.
(Ironically, because of the misspelled option name, it is what
you're getting.) You want decoded data:</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009><SPAN class=499400122-11082009><FONT color=#000000
size=3
face="Times New Roman">
dataType:'json', // Decode JSON response into
JavaScript data</FONT><BR></SPAN></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Verdana><SPAN
class=499400122-11082009>-Mike</SPAN></FONT></DIV><FONT color=#0000ff size=2
face=Verdana></FONT><FONT color=#0000ff size=2 face=Verdana></FONT><FONT
color=#0000ff size=2 face=Verdana></FONT><FONT color=#0000ff size=2
face=Verdana></FONT><FONT color=#0000ff size=2 face=Verdana></FONT><BR>
<BLOCKQUOTE
style="BORDER-LEFT: #0000ff 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B>
jquery-en@googlegroups.com [mailto:jquery-en@googlegroups.com] <B>On Behalf Of </B>Joey
Derrico<BR><B>Sent:</B> Tuesday, August 11, 2009 12:17 PM<BR><B>To:</B>
jquery-en@googlegroups.com<BR><B>Subject:</B> [jQuery] Re: AJAX and
JSON<BR></FONT><BR></DIV>
<DIV></DIV>Ok so I have used .ajax function to run my ajax and set type to
data. It is getting (well posting) to a php file that echo's a json_encoded
array. When it returns I am using console.log to display the returned data.
when I just use data it shows the JSON encoded data, but if I use data.key I
get undefined. How can I get it to show me the data from the JSON variable?
<BR><BR>Here is the script<BR> $.ajax({
//Begin ajax statement to login file<BR>
type:'POST', //It is a Post request<BR>
url:'functions/php/login.php', //The
login file<BR>
datatype:'json', //Return JSON encoded data<BR>
data:{ //Data being sent to the server
is...<BR>
Username:$('#CharacterBuilderUsername').val(),
//Username<BR>
Password:$('#CharacterBuilderPassword').val()
//Password<BR>
},<BR> cache:false,
//Don't Cache the file<BR>
success:function(data){ //if
successful....<BR>
$('#UserBar').load('main_pages/UserBar.php'); //Run an AJAX
request for the user menu<BR>
console.log("Data: "+data); //Shows Json
data: <SPAN class="objectBox objectBox-text ">Data:
{"PlayerId":1,"PlayerName":"First Last"}</SPAN><BR>
console.log("PlayerId: "+data.PlayerId); //Shows
undefined<BR>
console.log("Player's Name: "+data.PlayerName); //Shows
Undefined<BR>
var testdata=data.PlayerId;<BR>
console.log("Returned
Data="+testdata); //shows undefined<BR>
},<BR>
error:function(XMLHttpRequest, textStatus, errorThrown){
//if not successful...<BR>
$('#CharacterBuilderLoginSubmit').show(0); //show the submit
button<BR>
},<BR> });<BR>
});<BR><BR>From the PHP file, not the whole
script<BR>
$UserInfo['PlayerId']=$PlayerId;<BR>
$UserInfo['PlayerName']=$PlayerFirstName."
".$PlayerLastName;<BR> echo
json_encode($UserInfo);<BR></BLOCKQUOTE></BODY></HTML>