我有两个问题。一个是完全在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;
}
答案 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在他的评论中指出。这不起作用,因为键中有尾部冒号 - 但使用字符串键访问数据仍然有效。