2013-07-26 41 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