2

カップルの質問:

1)ボタンが押されるたびに新しいランダム値を更新しようとしています。ボタンがクリックされると、値が1回生成されます...ただし、ランダムではありません。したがって、新しい値が生成されないため、クリック時に関数が再度呼び出されるかどうかはわかりません。

2)$ .get()などのサーバー呼び出しを使用するときに、jqueryと同じファイル内にphpコードを含めて、同じファイル内の関数として呼び出すことはできますか?

その理由は、新しいphpスクリプトファイルを作成し続ける必要はなく、呼び出し元のjqueryと同じファイルにコードをスローしたいからです。

意味...

それ以外の$.get("../scripts/NameGenerator2.php",

私はこれをします:$.get("a php function within this same file",

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:

<?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」ファイルの「ObjectExpected」というエラーのみが発生します。これは、作業中のファイルではなく、接続されていないようです。

ここに画像の説明を入力してください

関数にドキュメントを追加する準備ができていると、ボタンonclick()呼び出しが壊れているようです。

ここに画像の説明を入力してください

4

2 に答える 2

3

jQueryを使用して.phpファイルを呼び出すことができます。ただし、ファイルはブラウザで到達可能であり、修飾されたデータを返す必要があります。

.get ()を使用すると、予想されるデータ型を定義できます。xml、json、script、またはhtmlにすることができます。json(私のお気に入り)を使用する場合は、php-functionjson_encode使用して出力を生成します。

同じファイルを使用する場合は、GET-Parameter(例:?ajax = 1)を作成します。AJAXリクエストを使用して、ファイルを呼び出し、GETパラメータを追加します。そして、.php-Fileで、通常の呼び出しと他の出力を返す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 に答える