Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xajax] problem z IE
Forum PHP.pl > Forum > XML, AJAX
SaMi
Mam coś takiego, konkretnie panel logowania
  1. <?php 
  2. define('ERROR_LOGIN_USERNAME','nie podano nazwy użytkownika<br />');
  3. define('ERROR_LOGIN_PASSWORD','nie podano hasła<br />');
  4.  
  5. require_once ("xajax_core/xajax.inc.php");
  6.  
  7.  
  8. function checkLogin($aFormValues)
  9. {
  10. if (array_key_exists("loginUsername",$aFormValues))
  11. {
  12. return processAccountData($aFormValues);
  13. }
  14. }
  15.  
  16. function processAccountData($aFormValues)
  17. {
  18. $objResponse = new xajaxResponse();
  19.  
  20. $bError = false;
  21.  
  22. if (trim($aFormValues['loginUsername']) == "")
  23. {
  24. $bError = ERROR_LOGIN_USERNAME;
  25. }
  26. if (trim($aFormValues['loginPassword']) == "")
  27. {
  28.  $bError .= ERROR_LOGIN_PASSWORD;
  29. }
  30.  
  31.  
  32. function sessionGet($getSession)
  33. {
  34. foreach($getSession as $value)
  35. {
  36. $sessionOut = $sessionOut.$value.' ';
  37. }
  38. return $sessionOut;
  39. }
  40.  
  41.  
  42. if (!$bError)
  43. {
  44. $u = $aFormValues['loginUsername'];
  45.  $p = $aFormValues['loginPassword'];
  46.  
  47.  require_once ("connect.php");
  48. $query = "SELECT user_id, first_name, last_name FROM users WHERE username='$u' AND PASSWORD=PASSWORD('$p')";
  49.  $result = @mysql_query($query, $dbc);
  50.  $row = mysql_fetch_array($result, MYSQL_NUM);
  51.  
  52.  if ($row) 
  53.  {
  54. $_SESSION = array();
  55. $_SESSION['login']['firstName'] = $row[1];
  56. $_SESSION['login']['lastName'] = $row[2];
  57.  
  58. $objResponse->assign("LoginBox1","style.backgroundColor", "#D4FFE3");
  59.  $objResponse->assign("loginBlackMsg","innerHTML", sessionGet($_SESSION['login'])." ");
  60.  }
  61.  else
  62.  {
  63.  $objResponse->assign("LoginBox1","style.backgroundColor", "#FFB1B1");
  64.  $objResponse->assign("loginBlackMsg","innerHTML", "niepoprawne dane");
  65.  }
  66. }
  67. else
  68. {
  69. $objResponse->assign("LoginBox1","style.backgroundColor", "#FFB1B1");
  70. $objResponse->assign("loginBlackMsg","innerHTML", $bError);
  71. }
  72.  
  73. return $objResponse;
  74. }
  75.  
  76.  
  77. $xajax = new xajax();
  78. $xajax->registerFunction("checkLogin");
  79. $xajax->processRequest();
  80.  
  81. print "<html><head>";
  82. $xajax->printJavascript();
  83. print "</head><body>";
  84.  
  85. include ('tpl_files/login.tpl');
  86. print"</body></html>";
  87.  
  88. ?>


niestety nie działa mi ten kawałek kodu pod IE tylko nie bardzo rozumiem dlaczego czy ktoś mógłby przybliżyć mi ten problem ?
  1. <?php
  2. else
  3. {
  4. $objResponse->assign("LoginBox1","style.backgroundColor", "#FFB1B1");
  5. $objResponse->assign("loginBlackMsg","innerHTML", $bError);
  6. }
  7. ?>


Chodzi o to że jeśli sprawdzone dane są poprawne nie poprawne ale oba pola są wypełnione to jest OK natomiast nie ma żadnej akcji pod IE jeśli któreś z pól jest puste.

niżej podaje zawartość login.tpl
  1. <style type="text/css">
  2. body { font-family: Verdana; font-size: 9pt }
  3. label { display: block; float: left; width: 60px; margin-top: 3px }
  4. .loginInput { margin-bottom: 2px }
  5. .LoginBox1 { margin: 2em auto 0 auto; text-align: center; width: 300px; height: 150px; border: 1px solid #000 }
  6. .LoginInsideBox{align-text: center;}
  7. .errorMsg { color: #FF6B6B; font-weight: bold; }
  8. .loginBlackMsg {color: #000000; font-weight: none; }
  9. .loginColorMsg {color: #00B900; font-weight: bold; }
  10.  
  11.  
  12.  
  13. <div id="LoginBox1" class="LoginBox1"><br />
  14. <div class="LoginInsideBox" >
  15. <form id="loginBox" method="post" onsubmit="xajax_checkLogin(xajax.getFormValues('loginBox')); return false">
  16.  
  17. <label>Login:</label>
  18. <input autocomplete="off" type="text" name="loginUsername" id="loginUsername" /><br />
  19.  
  20. <label>Hasło:</label>
  21. <input autocomplete="off" type="password" name="loginPassword" id="loginPassword" /><br />
  22.  
  23. <input type="submit" class="LoginButton" value="Wyślij"/>
  24.  
  25. </form>
  26. </div>
  27. <div id="theform" class="errorMsg">
  28. <span id="loginBlackMsg" class="loginBlackMsg"></span>
  29. <span id="loginColorMsg" class="loginColorMsg"></span>
  30. </div>
  31. </div>
josephk
z xajaxem i IE są jakieśtam problemy - w moim przypadku wystarczyło do wszystkich pól formularza jak i samego formularza dodanie atrybutu name takiego samego jak atrybut id. IE po prostu nie przekazywało xajaxowi danych z formularza bez atrybutów name.
Poza tym IE inaczej wywołuje zdarzenia onClick, onFocus niż np Firefox, co w niektóruch przypadkach nieco utrudnia sprawę (np. przy checkboxach wywołuje dopiero po "zwolnieniu" checkboxa - coś jak odwrotność onFocus)
(ja korzystam z xajax.0.2.5)
SaMi
Ja używam najnowszej dostępnej 0.5 beta 4. Jednak mam problem taki że jeden warunek if mi działa poprawnie natomiast drugi nie, konkrety podałem wyżej.
robsons6
Cytat(josephk @ 31.01.2008, 15:48:27 ) *
coś jak odwrotność onFocus

Czyli onBlur winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.