在我的javascript中,通过ajax作为数组而不是responseText接收php数据
目前,我有一个ajax设置,使用javascript的页面调用一个php文件,然后通过xhttp.responseText返回数据。这对于字符串非常有效,但当我向它传递一个json编码的数组时,它仍然将结果视为文本。我得到一个字符串格式的数组,看起来像这样在我的javascript中,通过ajax作为数组而不是responseText接收php数据,javascript,php,arrays,ajax,Javascript,Php,Arrays,Ajax,目前,我有一个ajax设置,使用javascript的页面调用一个php文件,然后通过xhttp.responseText返回数据。这对于字符串非常有效,但当我向它传递一个json编码的数组时,它仍然将结果视为文本。我得到一个字符串格式的数组,看起来像这样[1,2,3,4,5,6,7] 哪种方法可行,但不方便,因为它是表示数组的文本,而不是实际数组 如何将数据接收为数组而不是文本格式的数组?目前,我仍然可以使用split()获取数据,但这似乎有些草率。xhttp.responseText是否有更
[1,2,3,4,5,6,7]
哪种方法可行,但不方便,因为它是表示数组的文本,而不是实际数组
如何将数据接收为数组而不是文本格式的数组?目前,我仍然可以使用split()获取数据,但这似乎有些草率。xhttp.responseText是否有更好的替代方案?您可以尝试将数据作为JSON发送,这将为您提供所需数据结构的所有灵活性。PHP有一个函数json_encode,它将把PHP变量转换成json,您可以在客户端接收到它
您可以尝试将数据作为JSON发送,这将为您提供所需数据结构的所有灵活性。PHP有一个函数json_encode,它将把PHP变量转换成json,您可以在客户端接收到它
您需要设置标题,smth如下所示
$data = array('1', '2', '3');
header('Content-Type: application/json');
echo json_encode($data);
您需要设置标题,smth如下所示
$data = array('1', '2', '3');
header('Content-Type: application/json');
echo json_encode($data);
我如何在客户端接收它?我目前正在使用echo发送json编码的数组,如so echo json_encode($send_array);1.首先,确保您的PHP按照我所说的对JSON进行编码,并且您也设置了正确的头,即头('Content-Type:application/JSON');2.接下来,在AJAX代码中,执行JSON.parse(xhttp.responseText)以将JSON数据作为JavaScript对象检索。3.然后你可以用这个物体做任何你想做的事。此外,您还可以检查PHP是否通过xhttp.getResponseHeader(“内容类型”)发送JSON,如果您发送的是JSON对象,它应该返回“application/JSON”。@Terminus,我已将注释移到原始答案中。@rby Ok,我已经这样做了,但JSON.parse无法将其识别为有效的JSON对象。当我尝试在responseText上运行它时,它会抛出一个语法错误,但是如果我执行诸如JSON.parse(“[1,5,“false”]”)之类的测试,它就可以正常工作;我唯一能想到的就是我的头球,因为这是我怀疑我可能没有正确使用的主要部分。我是否只是将其放在php文件的顶部,即“doing echo json_encode($send_array);”@user3225440,我怀疑问题出在PHP方面。确保您没有回显或打印除发送回的数据以外的任何其他内容,这些数据应为echo json_encode(此处为您的数据);如果您的PHP中有其他打印和回音,那么所有这些都会被发回,这将产生一个问题。我如何在客户端接收它?我目前正在使用echo发送json编码的数组,如so echo json_encode($send_array);1.首先,确保您的PHP按照我所说的对JSON进行编码,并且您也设置了正确的头,即头('Content-Type:application/JSON');2.接下来,在AJAX代码中,执行JSON.parse(xhttp.responseText)以将JSON数据作为JavaScript对象检索。3.然后你可以用这个物体做任何你想做的事。此外,您还可以检查PHP是否通过xhttp.getResponseHeader(“内容类型”)发送JSON,如果您发送的是JSON对象,它应该返回“application/JSON”。@Terminus,我已将注释移到原始答案中。@rby Ok,我已经这样做了,但JSON.parse无法将其识别为有效的JSON对象。当我尝试在responseText上运行它时,它会抛出一个语法错误,但是如果我执行诸如JSON.parse(“[1,5,“false”]”)之类的测试,它就可以正常工作;我唯一能想到的就是我的头球,因为这是我怀疑我可能没有正确使用的主要部分。我是否只是将其放在php文件的顶部,即“doing echo json_encode($send_array);”@user3225440,我怀疑问题出在PHP方面。确保您没有回显或打印除发送回的数据以外的任何其他内容,这些数据应为echo json_encode(此处为您的数据);如果您的PHP中有其他打印和回音,那么所有这些也会被发回,这将产生问题。