Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;Javascript解析两个响应_Javascript_Php_Jquery_Parsing - Fatal编程技术网

PHP+;Javascript解析两个响应

PHP+;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}

我有两个问题。一个完全是PHP,另一个是Javascript。但两者在我想要得到的东西上是平等的

index.php

$.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我很高兴你注意到你可以简化它-我刚刚回答了你问我的问题。很高兴你知道问题已经解决了。