簡體   English   中英

隨機字符串選擇器每個頁面加載僅執行一次

[英]Random string picker only execute once per page load

當您按下鏈接文本時,應該為您提供一個來自文件的隨機字符串,該文件會在第一次單擊時執行。 但是第二次單擊沒有任何反應,我需要刷新頁面然后再次執行。

碼:

function randomName() {
    $names = file('layout/sub/names.txt', FILE_IGNORE_NEW_LINES);
    $array = array_rand($names);
    return $names[array_rand($names)];
}

<div class="randomName">

</div>

<button class="aardvark">Pick random name</button>

<script>
$(document).on('click','.aardvark', function(e){
    $('.randomName').html('<?php echo randomName(); ?>');
});
</script>

問題是古老的PHP是服務器端,而javascript(jQuery)是客戶端問題,您無法從javascript調用/運行PHP,因為它已經發生了。

您將需要使用AJAX重新請求一個新名稱。 這是一個復制粘貼的示例,歡迎您; p

<?php 
//is ajax
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    //is get name
    if(isset($_POST['get_name'])){
        $names = file('names.txt', FILE_IGNORE_NEW_LINES);
        exit(json_encode(array('resp' => $names[array_rand($names)])));
    }
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function(){

    //get_name function
    $.fn.get_name = function(){
        var elm = $(this);
        var ajax = $.ajax({
            url: "./",
            type: "POST",
            data: {'get_name':true},
            dataType: "json"
        });
        ajax.done(function(data){
            elm.html(data.resp);
        });
        ajax.fail(function(xhr, status, error){
            elm.html("AJAX failed:" + xhr.responseText);
        });
        return this;
    };

    //do get_name on page load
    $('#randomName').get_name();

    //do get_name on button click
    $('#aardvark').on('click', function(){
        $('#randomName').get_name();
    });
});
</script>
</head>

<body>
    <div id="randomName"></div>
    <button id="aardvark">Pick random name</button>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM