0

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

所有代码是:

<?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

4 回答 4

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 错误

于 2012-12-08T18:02:58.700 回答
0

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

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

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

于 2012-12-08T17:40:13.077 回答
0

此代码不返回任何值,请在创建文件后将值(真/假)传递给 ajax 响应。

于 2012-12-08T17:43:36.210 回答
0

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

于 2012-12-08T17:44:32.083 回答