PHP+;Javascript解析两个响应
我有两个问题。一个完全是PHP,另一个是Javascript。但两者在我想要得到的东西上是平等的 index.phpPHP+;Javascript解析两个响应,javascript,php,jquery,parsing,Javascript,Php,Jquery,Parsing,我有两个问题。一个完全是PHP,另一个是Javascript。但两者在我想要得到的东西上是平等的 index.php $.ajax({ type: "post", url: "insert_info.php?type=info", data: { array : all }, success: function(data) { alert(data); // Returns: {'status':1}
$.ajax({
type: "post",
url: "insert_info.php?type=info",
data: { array : all },
success: function(data) {
alert(data);
// Returns: {'status':1}
// I want to get "1"
// data[0] -> doesn't work
}
});
插入_info.php
// Connects to another file
include_once('verify_info.php');
$verify = new verify_info();
$arr = array("status:" => 1);
$extension = $verify->verify_file($_REQUEST['array'][9]);
if($extension[0] == 0){
$arr = array("status:" => 0);
}
echo json_encode($arr);
验证_info.php
public function verify_file($file){
$extensions = array('jpg', 'png', 'jpeg', 'bmp');
$info = pathinfo($file);
$arr = array();
if(!in_array($info['extension'], $extensions)){
$arr = array("status:" => 0);
}else{
$arr = array("status:" => 1);
}
return $arr;
}
在insert_info.php中,我希望通过$extension[0]获取从函数verify_file()检索到的状态
之后,我输出为json_,将值编码为Javascript,我想再次解析信息
我做错了什么?谢谢
编辑1:警报(数据状态)代码>也不起作用
编辑2:警报(数据状态)代码>永远不会工作,因为我回显{'status:',1}
(中间的两点有问题)
解决javascript问题的正确方法:
var obj = jQuery.parseJSON(data);
alert(data.status);
我仍在尝试修复php
编辑3:全部已解决。谢谢你们
public function verify_file($file){
$extensions = array('jpg', 'png', 'jpeg', 'bmp');
$info = pathinfo($file);
if(!in_array($info['extension'], $extensions)){
return false;
}
return true;
}
正如我在评论中所说,您将PHP中的密钥设置为“状态:
是否需要在密钥末尾添加尾随冒号?我不认为这是必要的,PHP数组已经提供了获取它们的机制,您的JSON将包含字符串而不进行处理,因此一旦您点击JS代码,您的密钥仍然是“status:”
,最有可能是“status”
不管你是否会做出改变,这都不会破坏任何东西。正如@charlietfl所指出的,在Javascript代码中,您应该设置返回到“json”
的数据类型,因此您的JS Ajax调用如下所示:
$.ajax({
type: "post",
url: "insert_info.php?type=info",
data: { array : all },
dataType: "json",
success: function(data) {
// Assuming no change on the backend
alert(data["status:"]);
}
});
但是,如果您更改字符串以删除冒号,则访问数据的status元素将是@A.Wolff在其评论中指出的data.status
。这不起作用,因为键中有尾随的冒号,但使用字符串键访问数据仍然有效。在我看来,alert(data.status)代码>应工作集数据类型:'json'
。。。。在浏览器控制台网络选项卡中检查请求…需要更多关于返回内容的线索(响应正文)。很难说问题是在php还是脚本中。另外,我们也不知道什么是all
,请看我的编辑人员,谢谢。我现在的问题是在PHP.@A.Wolff你很接近了,他的PHP行是array(“status:=>)
,所以在JS中你必须执行data[“status:”]
才能访问它@user3065191最好从数组中删除冒号(除非必要),因为冒号是通过JSON添加的,并且您的键是“文字”。如果您设置Array(“status:=>1”)
这样的键,您的JSON将是:{”status:::1}
@izuriel nice catch,您没有看到它。我被//返回值愚弄了:{'status':1}
首先,谢谢。我确实已经看到了这个问题,我在我的“编辑2”上写下了解决方案。我现在唯一的问题是PHP方面<代码>$extension=$verify->verify_文件($_请求['array'][9])
我不应该这样获得$extension:$extension[0]
?@user3065191您在编辑2中的内容执行与jQuery在设置数据类型时处理的相同的操作:“json”
,因此它不是必需的(尽管它是有效的)。这就是我提到它的原因。@user3065191如果你用PHP创建一个关联数组,你需要使用这些键来明确你在做什么:$extension[“status:”]
实际上,当我可以简单地返回true或false时,完全不需要数组。但是,谢谢。@user3065191我很高兴你注意到你可以简化它-我刚刚回答了你问我的问题。很高兴你知道问题已经解决了。