0

Web ページで自分の変数の 1 つを表示する際に問題が発生しています。これが私がこれまでに持っているものです。

 $(document).ready(function() {
    $(function() {
        $("#CheckID").click(function() {
         // submit ajax job and display the result
         var id = '$("#ID").val()'      
            $.ajax({
                type: "POST",
                url: "test_wID.php",
                data: "id",
                success: function(data) {
                $('#rightselection').html(data)
                }
            });
        });
    });
});

これは、フォームに入力された ID を取得し、その ID を bash スクリプトで使用するために使用している jquery 関数です。

phpはこちら。

<?php

//Get the ID from the HTML form and use it with the check chunk script.

$id = $_POST['ID'];
if (is_null($id)){
        echo "$id is null";
}
echo "Selected test Game ID: ".$id;
//print shell_exec('/opt/bin/tester $id');

?>

変数が null を返すため、スクリプトをコメントアウトしました。この時点では、ID を確実に取得しようとしています。

完全を期すために、ここに私が使用しているフォームがあります。

print "<p><h3>ID: <input type=\"text\" id=\"ID\" /></h3></p>";

#print "<br>";

print "<p><button id=\"CheckID\">Check ID</button></p>";

ボタンをクリックすると、変数がnullであるというメッセージがdivに表示されます。私の質問は、宣言に何か欠けているのでしょうか? var idがヌルなのはどうしてですか?

助けてくれてありがとう。

4

5 に答える 5

2

jQuery コードを次のように変更することを検討してください。

$.ajax({
    type: "POST",
    url: "test_wID.php",
    data: {id: $("#ID").val()},
    success: function(data) {
        $('#rightselection').html(data)
    }
});
于 2012-10-23T08:18:31.337 に答える
2

2 つのポイントで文字列と変数参照を混同しました。

まず、このステートメントは、jQuery 呼び出しの戻り値ではなくvar id = '$("#ID").val()'、文字列のみを変数に割り当てます。ifだから、ここを削除するだけ'です。

次に、呼び出しdataに指定するパラメーター は、それぞれの値ではなく、ajax()文字列のみで構成されています。"id"ここで に変更する必要があります{'id': id}

したがって、すべてを修正すると、コードは次のようになります。

 $(document).ready(function() {
        $("#CheckID").click(function() {
         // submit ajax job and display the result
         var id = $("#ID").val();     
            $.ajax({
                type: "POST",
                url: "test_wID.php",
                data: {'id': id},
                success: function(data) {
                  $('#rightselection').html(data);
                }
            });
        });
});

補足: all;を、それらが属する場所に配置するようにしてください。これにより、追跡が困難なエラーを防ぐことができます。

編集

@FlorianMargaine のコメントで指摘されているように、コードの周りに 2 つではなく 1 つのラッパーのみが必要です。

于 2012-10-23T08:17:52.203 に答える
1

まず、次の 2 つのスニペットは同等です。

$(document).ready(function() {
});

// Is equivalent to:

$(function() {
});

したがって、コードは次のようになります。

$(document).ready(function() {
    $(document).ready(function() {
    });
});

無駄ですよね?

第二に、この行は明らかに間違っています:

var id = '$("#ID").val()';

変数に文字列を渡しています。は評価されません。これは、PHP でこれを行うのと同じです。id$('#ID').val()

$id = '$_POST["id"]';

どちらが間違っていますか?

あなたはこれを求めている:

var id = $('#ID').val();

ところで、この変数の命名は改善される可能性があります。HTML ID についても同様です。

第三に、あなたは次のdataオプションで同じ間違いをしています$.ajax:

data: 'id'

オプションに文字列を渡すだけです。変数の値が必要です。dataid

それから、絶対に文字列が必要な場合は、お勧めしません。jQuery は特別な種類の文字列を想定しています。オブジェクトを渡した方がよいでしょう。このような:

data: {
    id: id
}

変数の命名が間違っている理由がわかりますか? プロパティと値を区別することはできません。次のことを行った場合:

var idValue = $('#ID').val();

これを使用できます:

data: {
    id: idValue
}

これははるかに読みやすいです。

于 2012-10-23T08:35:59.560 に答える
0

$.ajax 呼び出しでは、次のことを行う必要があります。

data : { id: id }
于 2012-10-23T08:17:47.987 に答える
-1

AJAX 呼び出しでパラメーターを渡したい場合は、URL に表示される GET 文字列と同様の文字列を渡す必要があります。次のようなものです:d=123&name=test

行を変更する

var id = '$("#ID").val()'

var id = 'id=' + $("#ID").val();
于 2012-10-23T08:17:39.863 に答える