我想创建新的.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);
?>
谢谢大家!
答案 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目录。