在多个加载事件之后将变量传递给jquery


passing variables to jquery after multiple load events

嗨,我有下面的代码,由4页组成(3 x php,1 x js)。基本原理很简单:

test17a.php:从n单选按钮中进行选择-激发onChange事件以加载test17b.php的内容。这包括从所选单选按钮的ID派生的MySQL查询。

test17b.php:显示一个项目,单击后加载test17c.php。这包括一个从test17a.php和test17b.php 的结果派生的MySQL查询

test17c.php:显示n个项,每个项都是可单击的,当单击这些项时,将运行从test17a.php、test17b.php和test17c.php 的结果派生的MySQL查询

test17d.php显示上述查询的结果。

问题是test17c.php中的值被返回为未定义。我假设这与值之前加载的javascript有关。但我不知道如何更改这一点,以便正确传递值。

如果有人能为我指明正确的方向,我将不胜感激。

##test17.js##
//fired from onchange event on test17a.php
function findB(GroupVal)
    {
        $("#B").load("test17b.php?GroupVal="+GroupVal).css('display','block');
    }
//fired from onClick event on test17b.php       
function findC(GroupVal,MasterID)
    {
        $(".C").load("test17c.php?GroupVal="+GroupVal+"&MasterID="+MasterID).css('display','block');
    }

//fired when clicking on one of the items on test17c.php (used to show which item was clicked on   
$(document).on('click', 'p.C2', function(evt) 
    {
        var $p = $(evt.currentTarget),
            GroupVal = $p.data('GroupVal'),
            MasterID = $p.data('MasterID'),
            SlaveID = $p.data('SlaveID'),
            $div = $p.next();
        console.log('3GroupVal='+GroupVal+' | 3MasterID='+MasterID+' | 3SlaveID='+SlaveID); 
        findE(GroupVal, MasterID, SlaveID, $div);
    }
);
function findE(GroupVal, MasterID, SlaveID, $div)
{
    $div.load("test17d.php?GroupVal="+GroupVal+"&MasterID="+MasterID+"&SlaveID="+SlaveID).css('display','block');
    console.log('4GroupVal='+GroupVal+' | 4MasterID='+MasterID+' | 4SlaveID='+SlaveID);
}

_

##test17a.php##
<head>
<script language="JavaScript" src="../Generic/JAVASCRIPT/jquery-min.js" type="text/javascript"></script>
<script language="JavaScript" src="test17.js" type="text/javascript"></script>
</head>
<Body>
<label for="GROUP1">GROUP1</label>
<INPUT class="groupSelectButtons" TYPE="radio" NAME="GroupSelect" VALUE="1" id="GROUP1" onChange="findB(this.value)"/>
<label for="GROUP2">GROUP1</label>
<INPUT class="groupSelectButtons" TYPE="radio" NAME="GroupSelect" VALUE="2" id="GROUP2" onChange="findB(this.value)"/>
<div id="B">
</div>
</Body>
##test.17b.php##
<?php
$GroupVal = $_GET['GroupVal'];
$MasterID = $GroupVal*2;
print "<p id='"B2'" onClick='"findC('$GroupVal','$MasterID')'"> GroupVal = $GroupVal | MasterID = $MasterID</p>";
print "<div class='"C'"></div></br>";
?>
 ##test.17c.php##
<?php
$GroupVal = $_GET['GroupVal'];
$MasterID = $_GET['MasterID'];
$SlaveID = $GroupVal*$MasterID;
print "<p class='"C2'" data-GroupVal='"$GroupVal'" data-MasterID='"$MasterID'" data-SlaveID='"$SlaveID'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID </p>";
print "<div class='"D'"></div>";
$SlaveID++;
print "<p class='"C2'" data-GroupVal='"$GroupVal'" data-MasterID='"$MasterID'" data-SlaveID='"$SlaveID'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID </p>";
print "<div class='"D'"></div>";
$SlaveID++;
print "<p class='"C2'" data-GroupVal='"$GroupVal'" data-MasterID='"$MasterID'" data-SlaveID='"$SlaveID'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID </p>";
print "<div class='"D'"></div>";
?>
##test17d.php##
<?php
$GroupVal = $_GET['GroupVal'];
$MasterID = $_GET['MasterID'];
$SlaveID = $_GET['SlaveID'];
$SubSlaveID = $SlaveID+10;
print "<p class='"D2'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID | SubSlaveID = $SubSlaveID</p>";
print "<div class='"E'"></div>";
?>

我想你在注释中给你的文件名是test.17c.php,而在url中是test17c.php所以这是一个问题,如果你认为响应是在php文件内容加载之前加载的,那么试试这个

$(<selector>).load(<url>, function() {
// print response so that it will print after response load
    alert('Load was performed.');
});

我找到了答案,这有点奇怪。在我的代码中,我有:

print "<p class='"C2'" data-GroupVal='"$GroupVal'" data-MasterID='"$MasterID'" data-SlaveID='"$SlaveID'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID </p>";

但当我仔细查看控制台时,我发现它被读取为:

print "<p class='"C2'" data-groupval='"$GroupVal'" data-masterid='"$MasterID'" data-slaveid='"$SlaveID'"> GroupVal = $GroupVal | MasterID = $MasterID | SlaveID = $SlaveID </p>";

换句话说,所有的数据xxx组件都被转换为小写。这意味着,一旦运行了Javascript,随后运行了$_GET['xxx'],变量都是"未定义的"。

在我的代码中,一旦我将这方面的所有实例转换为小写,它就运行得很好。奇怪的