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応答コードと関係があります。おそらく、PHPエラーが発生し、ブラウザに500の応答が返される可能性があります。これにより、成功ハンドラーではなくエラーハンドラーが表示されます。

Chromeのネットワークインスペクター(またはFirebugの[ネット]タブ)のようなものを使用して、実際のHTTP応答を調査しようとしましたか?

于 2012-12-08T17:40:13.077 に答える
0

このコードは値を返しません。ファイルがajax応答に作成された後、値(true / false)を渡してください。

于 2012-12-08T17:43:36.210 に答える
0

file_existsに相対パスを渡すと、パスが現在のPHPディレクトリからの相対パスでない限り、falseが返されます。

于 2012-12-08T17:44:32.083 に答える