Transferarea datelor de la client la server în format json folosind jquery ajax-stack overflow pe

În codul dvs., eroarea este eronată și conduce eroarea.

php - ultima linie nu trebuie să fie echo = $ str; și echo $ str; și prea multe operații ciudate găsesc în codul care pentru mine rămâne un mister.







html - tipul de buton nu trebuie să trimită un buton. deoarece altfel va trimite în orice caz date cu o reîncărcare a paginii. Dacă este necesar ca butonul să fie că este necesar să eliminați acțiunea în mod implicit (event.preventDefault ()).

În general, aveți prea multe erori în codul care vă împiedică să vă imaginați unde se poate. Deși este posibil de îndată ce rezolvi totul, totul va funcționa;)

Ecru corectat = $ str; pe ecou $ str; .

Codul a fost actualizat, transferul de date funcționează acum.

Eliminat var strInForm = JSON.stringify (obj);. Pur și simplu parcurg obiectul obj ca valoarea proprietății datelor când se numește $ .axax ().

Eliminat json_decode ($ str); în PHP, datele sunt în forma sa normală. Trebuie doar să codificați datele în JSON atunci când returnați rezultatul scriptului PHP.

Tip corectat: "POST" pe ​​metoda: "POST".

Mă întorc din PHP nu matricea numerotată cu un element [$ str]. dar matricea asociativă ['result' => $ str].

În handler, succesul a redenumit parametrul str la date. eliminat var ara = JSON.parse (str); - datele provin sub forma unui obiect JS (nu trebuie să procesați JSON în vreun fel). Obțin rezultatul din variabila rezultat din datele variabile. date ['rezultat'].







Prefață greoaie. După cum am înțeles scopul JSON. Sarcina principală a JSON este de a transfera date între client și server și înapoi.

Teoretic, datele despre client trebuie să transformăm un obiect JSON și apoi să folosim JSON.stringify () pentru ao transforma într-un șir pentru trimiterea la server.

Pe server, trebuie să transformăm acest șir într-un șir folosind json_decode () pentru a lucra cu aceste date. Lucrăm împreună cu ele, ca și elementele din matricea $ _POST. în acest exemplu $ _POST ['a']. și teoretic ar trebui să vină la un moment dat $ _POST ['strInForm']. am făcut acest șir de date: strInForm specificat în funcția $ .ajax (). Adică, într-o celulă de matrice $ _POST este un șir în format JSON, pe care trebuie să-l transformăm într-o matrice. Asta am crezut.

Apoi, am făcut ceva cu datele matricei și acum trebuie din nou transformat într-un șir folosind json_encode () și trimis clientului.

Pe client, această linie trebuie transformată într-o matrice utilizând JSON.parse (). Am crezut același lucru.

În general, am greșit, așa cum am putut.

1) Tip type = "submit" to type = "button"

2) crearea unui obiect

și convertirea unui obiect într-un șir de format JSON

"din anumite motive" nu funcționează, va trebui să folosesc versiunea obișnuită

3) convertirea unui șir de format JSON trecut de la server într-o serie de "pentru un motiv oarecare" nu funcționează

prin urmare, ne referim la această linie ca la o matrice deja pregătită

4) fișierul a.php a fost complet redenumit.

5) A apărut o altă eroare, dacă utilizatorul introduce un cuvânt în limba rusă, atunci va fi afișată blocarea codată abra. Poate că problema de recoding poate fi rezolvată folosind JSON_UNESCAPED_UNICODE în PHP5.4, dar am o versiune mai mică.







Trimiteți-le prietenilor: