在ajax函数返回false后,在php中创建file.txt

时间:2012-12-08 17:33:59

标签: php ajax file fopen

我想创建新的.txt文件,但由于此代码始终返回false,因此不会执行ajax success函数。

所有代码是:

<?php

$nome = $_POST["nome"];
$datanasc = $_POST["datanasc"];
$genero = $_POST["genero"];
$nat = $_POST["nat"];
$morada = $_POST["morada"];
$mail = $_POST["mail"];
$existe = false;
$myFile = "Users.txt";
$myFile1 = "Current_User.txt";



$fh = fopen($myFile, "r")or die("can't open file");
while (($line_of_text = fgets($fh))) {
$Data = explode(';', $line_of_text);
    if($nome == $Data[0] && $datanasc == $Data[1] && $genero == $Data[2] && $nat == $Data[3] && $morada == $Data[4] && $mail == $Data[5]){
        $existe = true;
        break;
    }
}

fclose($fh);
if($existe == true){
$arrayToJs["existe"] = $existe;

}

    else{
        $arrayToJs["existe"] = $existe;

        $fh = fopen($myFile, "a")or die("can't open file");
        $stringData = $nome.";".$datanasc.";".$genero.";".$nat.";".$morada.";".$mail.";"."\n";
        //print_r($stringData);
        fwrite($fh, $stringData);
        fclose($fh);

        $fh1 = fopen($myFile1, "w")or die("can't open file");
        fwrite($fh1, $stringData);
        fclose($fh1);

代码中存在问题导致返回false并且不执行ajax成功函数。 。

         if((!file_exists($nome.'_Favoritos.txt')) && (!file_exists($nome.'_Cesto.txt'))) {
                $ffav = $nome.'_Favoritos.txt';
                $handle = fopen($ffav, 'w') or die('Cannot open file:  '); 
                fclose($ffav);

                $fcart = $nome.'_Cesto.txt';
                $handle = fopen($fcart, 'w') or die('Cannot open file:  '); 
                fclose($fcart);
        }

    }

echo json_encode($arrayToJs);
?>

谢谢大家!

4 个答案:

答案 0 :(得分:1)

使用您使用fclose:

创建的文件指针($ handle)
if((!file_exists($nome.'_Favoritos.txt')) && (!file_exists($nome.'_Cesto.txt'))) {
    $ffav = $nome.'_Favoritos.txt';
    $handle = fopen($ffav, 'w') or die('Cannot open file:  '); 
    fclose($handle);

    $fcart = $nome.'_Cesto.txt';
    $handle = fopen($fcart, 'w') or die('Cannot open file:  '); 
    fclose($handle);
}

否则,当这些文件不存在时,您的文件将始终返回PHP错误

答案 1 :(得分:0)

您的AJAX成功函数是否被调用与PHP代码的“返回值”无关。

假设您正在使用jQuery或其他JavaScript框架之一,它与HTTP响应代码有关。据推测,您可能遇到PHP错误,导致500响应回浏览器。这将使您在错误处理程序而不是成功处理程序中结束。

您是否尝试使用Chrome中的网络检查器(或Firebug中的Net选项卡)来调查实际的HTTP响应?

答案 2 :(得分:0)

此代码未返回任何值,请在创建文件到ajax响应后传递值(true / false)。

答案 3 :(得分:0)

如果传递一个相对路径到file_exists,它将返回false,除非该路径恰好相对于当前的PHP目录。