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调用由 3 部分组成:url (getpeopleinjobs.php)、要传递的参数(包含在 {} 中)和您的成功处理程序(函数)。它们中的每一个在范围上都是独立的,因此它们都无法访问其他任何一个。基本上,您的成功处理程序不知道什么是“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 回答
0

我能够让这个工作,它确实是一个需要的字符串连接。

//some data taken from the google maps api.
resstring=results[0].geometry.location;

var new_window = 'http://www.trystingtrees.com/coordsc.php?coords='+resstring+'&listing_id=".$listing_id."';

popupWindow=window.open(new_window,'_SELF');
于 2014-01-05T12:44:07.337 回答