Pagina 1 din 1

eroare functia ajaxSend - Uncaught TypeError

Scris: Mar Feb 23, 2016
de andras
Salut,
Pe local merge ajaxSend, dar pe server cind apelez functia ajaxSend() (cu obiect javascript) imi da eroarea:

Cod: Selectaţi tot

Uncaught TypeError: data[k].replace is not a function ajax.js:7
Care sa fie cauza? Cred ca e de la server dar nu stiu ce. Multumesc.

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de MarPlo
Salut
Nu stiu daca e de la sever. In general, erorile din javascript (din browser) nu au legatura cu configuratia serverului.
Posibil sa fie ceva la datele din obiectul transmis la ajaxSend.
Pentru rezolvare ar fi de folos sa pui codul js si acel obiect.

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de andras
Se poate vedea pe serverul developper superbit.ro:1003/cms/ => oricare optiune din meniu (preferabil Proiecte ca e mai scurt) => Add => si se adauga orice date (e numai test), chiar si spatii => Save si se vede eroarea in Inspect element. Am testat in Opera. In Modzilla la apasare pe Add imi da eroarea ReferenceError: my_ajax3maa is not defined, desi functia exista in functii.js.

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de MarPlo
Nu imi dau seama care e problema, e ceva la datele din parametrul 'data'. In functia ajaxSend(), unde e:

Cod: Selectaţi tot

//alert(data);
Pune acest cod si vezi ce arata in consola:

Cod: Selectaţi tot

console.log(data);

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de andras
Am pus console.log(data); si imi afiseaza obiect js cu date de test:

Cod: Selectaţi tot

beneficiar: "test beneficiar"
clasa: "Proiecte"
datainc: "test data"
datasfi: "test data"
denumire: "test denumire"
id: 0
numeid: "proiect_id"
stare: "test stare"
tabela: "proiecte"
Sint datele pe care ma astept sa fie preluate in obiect js data si apoi preluate cu POST in ajax.

- Edit:
Cred ca am gasit problema: in obiectul js data exista o variabila numerica $id: 0 pe care functia replace n-o poate trata. O sa modific.

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de MarPlo
Daca pui acel numar ca sir, adica: '0', e posibil sa-l recunoasca.
In php:

Cod: Selectaţi tot

$id =0;
$arr["'". $id ."'"] ='ceva';
In JS:

Cod: Selectaţi tot

var id =0;
var obj ={};
obj["'"+ id +"'"] ='ceva';

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de andras
L-am pus ca sir si acum functioneaza. Multumesc!

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de MarPlo
Ma bucur. Am modificat in functia ajaxSend() ca sa functioneze bine si cu key /valori numerice fara sa fie necesare alte conversii.
Asta e functia in noua versiune.

Cod: Selectaţi tot

/* Ajax Function
 Send "data" to "php", using the method added to "via", and pass response to "callback" function
 data - json object with data to send, name:value; ex.: {"name1":"val1", "name2":"2"}
 php - address of the php file where data is send
 via - request method, a string: 'post', or 'get'
 callback - function called to proccess the server response
*/
function ajaxSend(url, data, via, callback){
  var obajx =  (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');  // XMLHttpRequest object

  //put data from "data" into a string to be send to "php"
  var str_data ='';
  for(var k in data){
    k = k.toString();  //convert numeric key to string

    //build the string with data to be sent
    str_data += k +'='+ data[k].toString().replace(/\?/g, '%3F').replace(/=/g, '%3D').replace(/&/g, '%26').replace(/[ ]+/g, '%20').replace(/[\+]/g, '%2B') +'&';
  }
  str_data = str_data.replace(/&$/, '');  //delete ending &

  //send data to php
  obajx.open(via, url, true);
  if(via =='post') obajx.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  obajx.send(str_data);

  //check the state request, if completed, pass the response to callback function
  obajx.onreadystatechange = function(){
    if(obajx.readyState == 4){
/// alert(obajx.responseText);  //for debug
      callback(obajx.responseText);
    }
  }
}

eroare functia ajaxSend - Uncaught TypeError

Scris: Mie Feb 24, 2016
de andras
Am inlocuit-o si a mers din prima.