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