2

几个问题:

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

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

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

意义...

代替$.get("../scripts/NameGenerator2.php",

我这样做:$.get("a php function within this same file",

查询:

<?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:

<?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>';

?>

有什么想法吗?谢谢!

更新:我似乎得到的唯一错误是我的“myJquery.js”文件中的“预期对象”,这不是我正在使用的文件,并且似乎没有连接。

在此处输入图像描述

当我将准备好的文档添加到我的函数中时,按钮 onclick() 调用似乎中断了。

在此处输入图像描述

4

2 回答 2

3

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

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

如果您想使用相同的文件,请创建一个 GET 参数,例如 ?ajax=1。使用您的 AJAX 请求,您可以调用该文件并附加 GET 参数。然后在您的 .php 文件中,您可以在正常调用和返回其他输出的 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
    }
?>
于 2012-12-19T18:32:10.827 回答
1

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

$('#generated').load('../scripts/NameGenerator2.php #pagePart');

例如,您使用正确的 id 回显 PHP -

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

在不使用任何内联 JavaScript 的情况下,这就是您的 jQuery 代码可能的样子 -

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

$(document).ready(function() {
    $('#generate').click(function(e){
        e.preventDefault();
        $('#generated').load('../scripts/NameGenerator2.php #pagePart');
    });
});

根据您的更新,您需要将所有 jQuery 函数移动到文档就绪函数中。

于 2012-12-19T18:25:01.873 回答