0

以下のスクリプトがあります。

<script type="text/javascript">
        function train(roww){
        $.post ('getpeopleinjobs.php',{ 
        postvarposition: form["position"+roww].value,
        postvarjob: form["job"+roww].value,
        postvarperson: form["person"+roww].value, 
        postrow: roww},
            function(output){ 
                popupWindow = window.open('trainingneeded.php?position=postvarposition&amp;job=postvarjob&amp;person=postvarperson','popUpWindow','height=400,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes')
                    });
                }
</script>

スクリプトをテストしましたが、100% 動作します。私の問題は、変数、postvarposition、postvarjob、および postvarperson が、実際の変数ではなく URL 文字列のテキストとして渡されることです。

行をフォーマットするにはどうすればよいですか

popupWindow = window.open('trainingneeded.php?position=postvarposition&amp;job=postvarjob&amp;person=postvarperson','popUpWindow','height=400,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes')

変数がテキストではなく変数として渡されるようにします。

前もって感謝します。

4

2 に答える 2

6

変数を文字列に連結する必要があります。

'trainingneeded.php?position=' + postvarposition + '&amp;job=' + postvarjob + '&amp;person=' + postvarperson

編集:

コードを使用すると、.post呼び出しが URL (getpeopleinjobs.php)、渡すパラメーター ({} で囲まれている)、および成功ハンドラー (関数) の 3 つの部分で構成されていることがわかります。これらはそれぞれ別のスコープであるため、他のいずれにもアクセスできません。基本的に、成功ハンドラーは「postvarposition」が何であるかを知りません。変数を表示するには、変数をコンテナー スコープの外に移動する必要があります。この場合、これらのアイテムの割り当てを {} から削除し、メソッド.post呼び出しの外に配置する必要があります。

<script type="text/javascript">
    function train(roww){
    $.post ('getpeopleinjobs.php',{ 
    // Because this is inside a {} these variables
    // can be considered "trapped" inside this scope
    postvarposition: form["position"+roww].value,
    postvarjob: form["job"+roww].value,
    postvarperson: form["person"+roww].value, 
    postrow: roww},
        function(output){ 
            popupWindow = window.open('trainingneeded.php?position=postvarposition&amp;job=postvarjob&amp;person=postvarperson','popUpWindow','height=400,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes')
                });
            }
</script>

これに対する可能な解決策は次のとおりです。

<script type="text/javascript">
    function train(roww){

        // declare them and assign them out here
        var position = form["position"+roww].value;
        var job = form["job"+roww].value;
        var person = form["person"+roww].value;

        $.post ('getpeopleinjobs.php',{ 
            postvarposition: position,
            postvarjob: job,
            postvarperson: person, 
            postrow: roww },
        function(output){ 
            popupWindow = window.open('trainingneeded.php?position=' + position + '&amp;job=' + job + '&amp;person=' + person,'popUpWindow','height=400,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes');
                });
            }
</script>
于 2012-07-12T16:14:29.397 に答える