【发布时间】:2013-05-01 19:34:59
【问题描述】:
我正在尝试使用 ajax 和 php 轮询我正在编写的应用程序。 php 本质上接收一个字符串化对象以放入文件中,以后可以读取该文件。我写的对象工作得很好。我现在遇到的问题是,如果 php 试图读取一个不存在的文件,它似乎会向 $.post() 调用返回一个错误代码。我希望它返回 JSON,并且成功,以便我可以处理有点不同。
有问题的php如下:
public function read(){
$id = $this->input->post('id');
$test = fopen("./meetings/".$id.".mt", 'r');
if(!$test){
error_log("Unable to open file, you mutt!");
echo json_encode(array('status' => "FAIL"));
}else{
error_log("Here! 2");
$obj = array();
while(!feof($test)){
error_log("Here! 3");
$tmp = fgets($test);
error_log("Here! 4");
if($tmp){
$obj[count($obj)] = $tmp;
}
}
fclose($test);
error_log("Here! 5");
if(!count($obj) > 0){
echo json_encode(array('status' => "FAIL"));
}
echo json_encode(array('status' => 'OKAY', 'obj' => $obj));
}
}
Javascript(使用jquery)如下:
function read(){
$.post('<?php echo base_url(); ?>meetings/read', {id: <?php echo $id;?>}, function(json){
console.log(json.status);
if(json.status == 'OKAY'){
for(var i = 0 ; i < json.obj.length ; i++){
parseObject(json.obj[i]);
}
}
}, 'json');
}
javascript 没有到达成功函数,我使用ajaxError() 进行了检查,但我不知道如何解决这个问题,甚至不知道为什么 php 会发送错误,因为我想我正在为它做准备。否则,php 将按预期工作。此外,轮询确实尽可能频繁地调用服务器。有关解决此问题的任何建议吗?如果您需要更多信息,请询问。谢谢!
【问题讨论】:
-
硬编码发送到 PHP 的数据并直接在浏览器中访问。这样您就可以查看是否是问题所在。
-
我知道它是正确的,但问题是检查文件是否不存在。我知道它现在不存在,所以它无法打开。我需要安全地检查文件是否打开,如果没有(它有问题或不存在)然后返回 json 说这样。不过现在,php 完全失败了,因此不会返回 json。
标签: jquery file-io php polling