Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema script Ajax
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Subiectul anterior :: Subiectul următor  
Autor Mesaj
asavin



Data înscrierii: 23/Noi/2005
Mesaje: 175
Locație: Galati

Trimis: Vin Mar 30, 2007 9:08 am    Titlul subiectului: Problema script Ajax  

Salutare!

Am un script foarte simplu Ajax prin care fac cereri catre server si unul php. Cred ca cel mai bine este sa le vedeti :
Cod:
var http = createRequestObject();
var objectId = '';

function leftTrim(sString) {
   while (sString.substring(0,1) == ' ') {
      sString = sString.substring(1, sString.length);
   }
   return sString;
}

function rightTrim(sString) {
   while (sString.substring(sString.length-1, sString.length) == ' ') {
      sString = sString.substring(0,sString.length-1);
   }
   return sString;
}

function createRequestObject(htmlObjectId){
    var obj;
   
    objectId = htmlObjectId;
   
    if(window.ActiveXObject){
        obj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else{
        obj = new XMLHttpRequest();
    }
    return obj;   
}

function sendReq(serverFileName, variableNames, variableValues) {
   var paramString = '';

   variableNames = variableNames.split(',');
   variableValues = variableValues.split(',');
   
   for(i=0; i<variableNames.length; i++) {
      paramString += leftTrim(rightTrim(variableNames[i]))+'='+leftTrim(rightTrim(variableValues[i]))+'&';
   }
   paramString = paramString.substring(0, (paramString.length-1));
         
   if (paramString.length == 0) {
         http.open('get', serverFileName);
   }
   else {
      http.open('get', serverFileName+'?'+paramString);
   }
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
   
   if(http.readyState == 4){
      responseText = http.responseText;
      document.getElementById(objectId).innerHTML = responseText;
    }
}


Script din pagina client :

Cod:
<div id="div_edit_status">
  <div id="div_status" >
    <select name="select_status" id="select_status" onchange="if(this.value) {createRequestObject('div_edit_status');sendReq('modules/projects_data/http_request/server_artlist_codes.php\', 'action, status, cd_id' , 'update_status,  ' + URLEncode(this.value) + 'id');}">
      <option>Pending</option>
      <option>----------</option>
      <option value="2">Ordered</option>
      <option value="6">Stock</option>
      <option value="5">Pur. UK</option>
      <option value="4">Modified</option>
      <option value="7">Solved</option>
      <option value="3">Canceled</option>
    </select>
  </div>
</div>



Script din pagina server :
an style="color: #000000"><?php isset($_GET['status'])?$status=mysql_real_escape_string($_GET['status']):exit(); $sql=mysql_query('...'); echo mysql_error(); $onChange=     'if(this.value) {'     .'createRequestObject(\'div_edit_status\');'     .'sendReq(\'modules/stock_data/http_request/server_artlist_codes.php\', '     .'\'action, status, cd_id\' , \'update_status,  + URLEncode(this.value));     .'}'; switch ($status) {     case '1' :         $content = '<div id=&quot;div_status&quot; '         .'style=&quot;display:none&quot;>'.PHP_EOL         .'<select name=&quot;select_status&quot;'.         .'&quot; id=&quot;select_status&quot; '         .'onchange=&quot;'.$onChange.'&quot;>'.PHP_EOL         .'<option>Pending</option>'.PHP_EOL         .'<option>----------</option>'.PHP_EOL         .'<option value=&quot;2&quot;>Ordered</option>'.PHP_EOL         .'<option value=&quot;6&quot;>Stock</option>'.PHP_EOL         .'<option value=&quot;5&quot;>Pur. UK</option>'.PHP_EOL         .'<option value=&quot;4&quot;>Modified</option>'.PHP_EOL         .'<option value=&quot;7&quot;>Solved</option>'.PHP_EOL         .'<option value=&quot;3&quot;>Canceled</option>'.PHP_EOL         .'</select></div>.PHP_EOL;     break;     ... } echo $content; 

Practic cea ce face scriptul Ajax de mai sus este sa inlocuiasca innerHTML-ul elementului "div_edit_status" cu orice este afisat in pagina server.

Problema este ca prima data merge schimbat, a doua oara (a doua oara deja e cel din pagina server) iar a treia oara imi da eroare js ca elementul nu mai exista.

Are cineva vreo idee ... ?

Mersi,
Alex
Sus  
gafitescu



Data înscrierii: 21/Mar/2006
Mesaje: 38
Locație: Iasi

Trimis: Vin Mar 30, 2007 11:19 am    Titlul subiectului:  

Incearca in loc de in php

$content = '<div id=&quot;div_status&quot; '
.'style=&quot;display:none&quot;>'.PHP_EOL

sa fie
$content = '<div id="div_status" '
.'style=&quot;display:none&quot;>'.PHP_EOL

&quot cu " nu vad care ar fi problema de ce pui &quot...probabil ca nu gaseste respectivul div definit cu id div_status
Sus  
asavin



Data înscrierii: 23/Noi/2005
Mesaje: 175
Locație: Galati

Trimis: Vin Mar 30, 2007 11:29 am    Titlul subiectului:  

Dar nu e &quote; .... cred ca e o eroare PHPBB ca de fapt am scris " acolo...
Sus  
gafitescu



Data înscrierii: 21/Mar/2006
Mesaje: 38
Locație: Iasi

Trimis: Vin Mar 30, 2007 12:14 pm    Titlul subiectului:  

Instaleazati firebug si uitate in consola...

si scrie ce eroare iti da si da un copy / paste la raspuns
Sus  
asavin



Data înscrierii: 23/Noi/2005
Mesaje: 175
Locație: Galati

Trimis: Vin Mar 30, 2007 12:51 pm    Titlul subiectului:  

gafitescu a scris: Instaleazati firebug si uitate in consola...

si scrie ce eroare iti da si da un copy / paste la raspuns

Am instalat Firebug ... super plugin ... mersi ca mi-ai zis de el ...
Cred ca am gasit si erorarea :

Normal trebuia sa fie
Cod:
<td class="cells" align="center" ondblclick="edit_status('293');" style="border-bottom: medium none rgb(204, 204, 204);">
  <div id="div_edit_status_293">
     <span id="span_status_293" style="display: block;">Moddified</span>
     <div id="div_status_293" style="display: none;">
       <select id="select_status" onchange="if(this.value) {createRequestObject('div_edit_status_293');sendReq('modules/projects_data/http_request/server_artlist_codes.php', 'action, status, cd_id' , 'update_status, '+URLEncode(this.value)+', 293' );edit_status('293');}" name="select_status_293">
        <option>Moddified</option>
        <option>----------</option>
        <option value="6">Stock</option>
        <option value="5">Pur. UK</option>
        <option value="7">Solved</option>
        <option value="3">Canceled</option>
      </select>
    </div>
  </div>
</td>


si dupa ce modfic de 2 ori :

Cod:
<td class="cells" align="center" ondblclick="edit_status('293');" style="border-bottom: medium none rgb(204, 204, 204);">
  <div id="div_edit_status_293"/>
</td>


are cineva vreo idee ??
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community