2013-07-26 36 views
0

嗨,我有下面的代码,由4页(3 x php,1 x js)组成。其基本原理很简单:jquery - 在多个加载事件后将变量传递给jquery

test17a.php:从ñ单选按钮 进行选择 - 火灾onChange事件加载test17b.php的内容。这包括从所选单选按钮的ID导出的MySQL查询。

test17b.php: 显示一个项目,点击它时,负载test17c.php这包括来自test17a.php和test17b.php

test17c.php的结果导出的MySQL查询: 显示器Ñ物品,其中每一个是可点击,点击时这些运行从test17a.php,test17b.php的结果导出的MySQL查询,并test17c.php

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

问题是,test17c.php中的值返回为undefined。我假设这是在值被加载之前加载的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>"; 

?> 

回答

0

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

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'],变量都是'未定义'。

一旦我在我的代码中将其转换为小写的所有实例,它运行良好。奇怪。

1

我想什么是你给乌尔评论中的文件名作为test.17c.php而网址是test17c.php。所以这一夜是一个问题,如果乌拉圭回合思想,响应之前php文件的内容装载的装载那就试试这个

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

有斑点。我倾向于使用格式type.name.php(例如test.17c.php,conf.dbAccess.php),这就是为什么我在上面输入它的原因。但在这种情况下,我正在使用的网页只是test17c.php(只是为了迷惑自己,我猜) – IGGt