PHP和JQuery:值未更新

PHP和JQuery:值未更新,php,jquery,Php,Jquery,两个问题: 1) 我试图在每次按下按钮时更新一个新的随机值。单击按钮时,会生成一个值。。。但这不是随机的。因此,我不确定单击时是否再次调用该函数,因为没有生成新值 2) 在使用诸如$.get()之类的服务器调用时,是否可以将php代码包含在与jquery相同的文件中,并将其作为同一文件中的函数调用 原因是,我不想继续创建新的php脚本文件,而是宁愿将代码与调用jquery的代码放在同一个文件中 意思是 而不是$.get(“../scripts/NameGenerator2.php)”, 我这样做

两个问题:

1) 我试图在每次按下按钮时更新一个新的随机值。单击按钮时,会生成一个值。。。但这不是随机的。因此,我不确定单击时是否再次调用该函数,因为没有生成新值

2) 在使用诸如$.get()之类的服务器调用时,是否可以将php代码包含在与jquery相同的文件中,并将其作为同一文件中的函数调用

原因是,我不想继续创建新的php脚本文件,而是宁愿将代码与调用jquery的代码放在同一个文件中

意思是

而不是
$.get(“../scripts/NameGenerator2.php)”,

我这样做:
$.get(“同一文件中的php函数”,

JQuery:

<?php 
   if ($imgid == 1) {
?>
<button onclick="generate()">Generate</button>

<button id="generateButton">Generate</button>

<script type="text/javascript">
    $(document).ready(function() {
        $("#generateButton").click(function(e) {
            //alert("called");
           $.get("../scripts/NameGenerator2.php", 
                function(returned_data) {
                    $("#generated").html(returned_data);
                }
            ).error(function(jqXHR, status, error) {
                console.log("error in $.get")
            });
        });
    });
</script>       
<?php } ?>
<br /><span id="generated"></span><br />
<?php 
$adj = array("Happy", "Great", "Mandarin", "New", "Golden", "Ming's");
$noun = array("Dragon", "Sea", "Wok", "Fortune", "Rice", "Empire");
$place = array("Garden", "China", "Village", "Palace", "Kitchen", "Mountain");


$x = rand(0, count($adj)-1);
$y = rand(0, count($noun)-1);
$z = rand(0, count($place)-1);

echo '<p>' . $adj[$x] . " " . $noun[$y] . " " . $place[$z] . '</p>';

?>

生成
生成
$(文档).ready(函数(){
$(“#生成按钮”)。单击(函数(e){
//警报(“被呼叫”);
$.get(“../scripts/NameGenerator2.php”,
函数(返回的数据){
$(“#生成的”).html(返回的#u数据);
}
).错误(函数(jqXHR、状态、错误){
log(“在$.get中出错”)
});
});
});


PHP:

<?php 
   if ($imgid == 1) {
?>
<button onclick="generate()">Generate</button>

<button id="generateButton">Generate</button>

<script type="text/javascript">
    $(document).ready(function() {
        $("#generateButton").click(function(e) {
            //alert("called");
           $.get("../scripts/NameGenerator2.php", 
                function(returned_data) {
                    $("#generated").html(returned_data);
                }
            ).error(function(jqXHR, status, error) {
                console.log("error in $.get")
            });
        });
    });
</script>       
<?php } ?>
<br /><span id="generated"></span><br />
<?php 
$adj = array("Happy", "Great", "Mandarin", "New", "Golden", "Ming's");
$noun = array("Dragon", "Sea", "Wok", "Fortune", "Rice", "Empire");
$place = array("Garden", "China", "Village", "Palace", "Kitchen", "Mountain");


$x = rand(0, count($adj)-1);
$y = rand(0, count($noun)-1);
$z = rand(0, count($place)-1);

echo '<p>' . $adj[$x] . " " . $noun[$y] . " " . $place[$z] . '</p>';

?>

您无法获取PHP函数,但可以加载页面并获取特定的div-

$('#generated').load('../scripts/NameGenerator2.php #pagePart');
使用适当的id呼出PHP,例如-

echo '<p id="pagePart">' . $adj[$x] . " " . $noun[$x] . " " . $place[$x] . '</p>';
echo'

。$adj[$x]。$noon[$x]。$place[$x]。

';
不使用任何内联JavaScript,这就是jQuery代码的外观-

<button id="generate">Generate</button>

$(document).ready(function() {
    $('#generate').click(function(e){
        e.preventDefault();
        $('#generated').load('../scripts/NameGenerator2.php #pagePart');
    });
});
生成
$(文档).ready(函数(){
$(“#生成”)。单击(函数(e){
e、 预防默认值();
$('#generated').load('../scripts/NameGenerator2.php#pagePart');
});
});

根据您的更新,您需要将所有jQuery函数移到document ready函数中。

您无法获得PHP函数,但可以加载页面并获得特定的div-

$('#generated').load('../scripts/NameGenerator2.php #pagePart');
使用适当的id呼出PHP,例如-

echo '<p id="pagePart">' . $adj[$x] . " " . $noun[$x] . " " . $place[$x] . '</p>';
echo'

。$adj[$x]。$noon[$x]。$place[$x]。

';
不使用任何内联JavaScript,这就是jQuery代码的外观-

<button id="generate">Generate</button>

$(document).ready(function() {
    $('#generate').click(function(e){
        e.preventDefault();
        $('#generated').load('../scripts/NameGenerator2.php #pagePart');
    });
});
生成
$(文档).ready(函数(){
$(“#生成”)。单击(函数(e){
e、 预防默认值();
$('#generated').load('../scripts/NameGenerator2.php#pagePart');
});
});

根据您的更新,您需要将所有jQuery函数移动到document ready函数中。

您可以使用jQuery调用.php文件。但是该文件应该可以通过浏览器访问,并且应该返回合格的数据

使用,您可以定义预期的数据类型。它可以是xml、json、脚本或html。 如果您想使用json(我最喜欢的),请使用php函数生成输出

如果要使用相同的文件,请创建一个GET参数,例如?ajax=1。通过ajax请求,您可以调用该文件并附加GET参数。然后,在.php文件中,您可以在普通调用和ajax调用之间切换,ajax调用返回其他输出

<?php
    if (!empty($_GET) && !empty($_GET['ajax']) && $_GET['ajax'] == 1) {
        // header("Content-type: application/json");
        // $data = array(some_data);
        // echo json_encode($data);
        echo 'AJAX-call-output';
    } else {
?>
        <!-- [...] -->
        <script type="text/javascript">
            function generate() {     
               $.get("../scripts/NameGenerator2.php",
                    { ajax: 1 },  // GET-Parameter
                    function(returned_data) {
                        //alert("test");
                        $("#generated").html(returned_data);
                    }
                    //, "json"
                );
            }
        </script>
        <!-- [...] -->
<?php
    }
?>

函数generate(){
$.get(“../scripts/NameGenerator2.php”,
{ajax:1},//获取参数
函数(返回的数据){
//警报(“测试”);
$(“#生成的”).html(返回的#u数据);
}
//,“json”
);
}

您可以使用jQuery调用.php文件。但是该文件应该可以通过浏览器访问,并且应该返回符合条件的数据

使用,您可以定义预期的数据类型。它可以是xml、json、脚本或html。 如果您想使用json(我最喜欢的),请使用php函数生成输出

如果要使用相同的文件,请创建一个GET参数,例如?ajax=1。通过ajax请求,您可以调用该文件并附加GET参数。然后,在.php文件中,您可以在普通调用和ajax调用之间切换,ajax调用返回其他输出

<?php
    if (!empty($_GET) && !empty($_GET['ajax']) && $_GET['ajax'] == 1) {
        // header("Content-type: application/json");
        // $data = array(some_data);
        // echo json_encode($data);
        echo 'AJAX-call-output';
    } else {
?>
        <!-- [...] -->
        <script type="text/javascript">
            function generate() {     
               $.get("../scripts/NameGenerator2.php",
                    { ajax: 1 },  // GET-Parameter
                    function(returned_data) {
                        //alert("test");
                        $("#generated").html(returned_data);
                    }
                    //, "json"
                );
            }
        </script>
        <!-- [...] -->
<?php
    }
?>

函数generate(){
$.get(“../scripts/NameGenerator2.php”,
{ajax:1},//获取参数
函数(返回的数据){
//警报(“测试”);
$(“#生成的”).html(返回的#u数据);
}
//,“json”
);
}

我知道你在说什么。你能提供一个简单的例子吗?我知道你在说什么。你能提供一个简单的例子吗?我更新了我的答案,但是你的所有jQuery函数都需要在你的文档就绪处理程序中。文档就绪处理程序中没有函数。@JayBlanchard我以为是这个处理程序r是可选的,或者您可以选择它的多个实例。只有当jQuery位于页面底部附近时,它才是可选的,以确保在调用jQuery代码之前DOM元素存在。您可以有多个实例,但不能有多个。@JayBlanchard还添加了该处理程序,这似乎打破了我的按钮onclick=“generate()”调用,说“预期对象”。如上所述。是的,您可以使用CSS定位按钮。取出您的console.log语句(即扼住这些语句)它应该可以工作。我更新了答案,但所有jQuery函数都需要在文档就绪处理程序中。文档就绪处理程序中没有函数。@JayBlanchard我认为该处理程序是可选的,或者您可以选择它的多个实例。只有当jQuery位于页面底部附近时才是可选的,以确保DOM在调用jQuery代码之前存在元素。可以有多个实例,但不能有。@JayBlanchard,添加该处理程序似乎会破坏我的按钮onclick=“generate()”