PHP + Javascript解析两个响应

时间:2013-12-10 15:33:33

标签: 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}
        // I want to get "1"
        // data[0] -> doesn't work
    }
});

insert_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);

verify_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_encode作为Javascript的值,我想再次解析信息。

我做错了什么?感谢。

修改1 alert(data.status);也不起作用。

编辑2: alert(data.status);永远不会有效,因为我回复{'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;
}

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,您将PHP中的密钥设置为"status:"是否是密钥末尾必需的尾部冒号?我不认为这是必要的,PHP数组已经提供了获取它们的机制,你的JSON将包含字符串而不处理它,因此一旦你点击你的JS代码,你的密钥仍然是"status:",你最有可能在那里{ {1}}。

无论您是否进行此更改都不会破坏任何内容。在您的Javascript代码中,正如@charlietfl指出的那样,您应该将返回的"status"设置为dataType,这样您的JS Ajax调用将如下所示:

"json"

但是,如果您更改了字符串以删除冒号,那么访问数据的状态元素将是$.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:"]); } }); ,因为@ A.Wolff在他的评论中指出。这不起作用,因为键中有尾部冒号 - 但使用字符串键访问数据仍然有效。