Php 在Ajax成功中获取未定义的数据或双引号
我已经通过Ajax将数据发送到PHP脚本,并希望以JSON编码返回多个数据。不幸的是,当我想要访问第一个和第二个数据时,我只得到双引号(“)。我尝试了StackOverflow的几个例子,但没有成功,我也不知道为什么。下面的部分是我从数据类型开始,然后是成功Php 在Ajax成功中获取未定义的数据或双引号,php,json,ajax,Php,Json,Ajax,我已经通过Ajax将数据发送到PHP脚本,并希望以JSON编码返回多个数据。不幸的是,当我想要访问第一个和第二个数据时,我只得到双引号(“)。我尝试了StackOverflow的几个例子,但没有成功,我也不知道为什么。下面的部分是我从数据类型开始,然后是成功 dateType: "json", success:function(data) { alert(data.first); if(data.last) {
dateType: "json",
success:function(data)
{
alert(data.first);
if(data.last)
{
$('#urlfull').val(data.last);
}else{
// Fade in
alert(data.last);
}
}
接下来是PHP脚本,我在其中尝试了StackOverflow的标记解决方案
$output = array('first'=>'Steven',
'last'=>'Spielberg',
'address'=>'1234 Unlisted Drive');
echo json_encode($output,JSON_FORCE_OBJECT);
然而,警报返回(data.first)是未定义的,然后其他时候它是双引号(在我进行更改之前)。但我不知道为什么。我想理解并解决。但我找不到问题,因为除了我,似乎没有人有这个问题
提前感谢您的帮助。如果您想真正了解发生了什么,请不要使用
alert()
;使用console.log()
并查看开发人员控制台。您希望看到的是实际数据,而不是它的某个字符串强制版本。如果您试图实际了解代码中发生了什么,请不要使用警报。这样说,console.log将数据记录下来,而不是数据。首先:在尝试访问之前,找出其中的实际内容这是.first
属性。我认为这是一个输入错误:dateType
不是dataType
。如上所述,你说的“只获取双引号”是什么意思?JSON字符串必须是双引号,那么你想从哪里获取单引号呢?话虽如此,JSON对象中的引号应该是无关的(特别是在PHP端,您将使用json\u decode(string)
获取真实对象,而在JS端,您将使用json.parse(string)
获取真实对象,因此引号符号应该是不相关的)@Syscall,您解决了问题。这是打字错误!谢谢。