JS提示+ PHP

时间:2017-05-01 10:36:38

标签: javascript php

我有以下js代码,除非用户输入值,否则将重新加载页面。

<script type="text/javascript">
var name = prompt("Please enter your name:");
if (name === "") {
    location.reload();
} else if (name) {
} else {
    location.reload();
}
</script>

我想用来将结果传递给PHP变量。我知道这是不可能的,但这样的功能有效:

<?php

    //prompt function
    function prompt($prompt_msg){
        echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."'); </script>");

        $answer = "<script type='text/javascript'> document.write(answer); </script>";
        return($answer);
    }

    //program
    $prompt_msg = "Please type your name.";
    $name = prompt($prompt_msg);

    $output_msg = "Hello there ".$name."!";
    echo($output_msg);

?>

无论如何,我似乎无法检查$ name是否为空值/空值。似乎没什么用。

有人能指出我可以验证用户是否在PHP代码中输入空值(或按下取消)的方向(类似于我在js中的内容)

感谢

2 个答案:

答案 0 :(得分:1)

我无法发表评论,所以我认为答案就足够了。

据我所知,如果用户按下取消,您将无法直接获取。但是你可以使用empty()来检查结果是否为空。

function prompt($prompt_msg){
    echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."'); </script>");

    $answer = "<script type='text/javascript'> document.write(answer); </script>";
    // Checks if $answer is empty/spaces
    if (!empty($answer)) {
        // Not empty, return
        return($answer);
    } else {
        // $answer is empty, we need to reprompt them.
        // Reprompt them, etc
    }
}

这是我的第一个答案之一,所以我希望它能够反映出正确的答案格式。我也希望我能正确理解你。我为没有能够对此发表评论而道歉。

PHP Empty() - http://php.net/manual/en/function.empty.php

根据以下评论,此处是经过修改的设置。

new_file.php(创建文件)

<?php
// Get Post
if (!empty($_POST['name'])) {
    // Get User's name
    $input_name = trim($_POST['name']);

    // Create new file with name of user
    $file = fopen($input_name . ".txt", "w") or die("Unable to open file!");
    fwrite($file, $input_name . "\n");
    fclose($file);  

    echo "New file created.";
}
?>

index.html(主页或用户输入名称的位置)

<script>
$(document).ready(function(){
    // Prompt for username
    var input_name = prompt("Please enter your name:");

    // If the username was entered
    if (input_name != null) {
        // Post to new_file.php
        $.post("new_file.php", {name: input_name }, function(status){
            alert(status);
        });
    }   
});
</script>

答案 1 :(得分:1)

不要混淆自己。只需将值作为URL参数路径并在服务器端进行检查。

 <?php if (!isset($_GET['name'])): ?> 
      <script type="text/javascript">
var loc = location.href;
var name = prompt("Please enter your name:","");  
if (name == "" || name =='null') {
    location.reload();        
} else {
      location.href = loc+"?name="+name;
} 
</script>


<?php else: ?>
<?php echo strip_tags($_GET['name']); ?>

    <?php endif; ?>

然而要取消意外结果,在此解决方案中,我认为您的网址没有参数,因此,else iflocation.href = loc+"?name="+name;但如果有参数,您可以比如location.href = loc+"&name="+name;