$.ajax() nu funcționează [jquery] (Programare, Javascript, Php, Jquery, Ajax)

M_Magz a intrebat.
a intrebat.

Salut, am văzut toate soluțiile de aici de pe StackOverflow pe această temă, dar se pare că nu funcționează, nu știu de ce. Am acest cod în interiorul $(form).submit(function(e){...}); event handler.

După cum se vede, cred că login.php primește valoarea formData pentru că atunci când trimit formularul nu se întâmplă nimic.

Acesta este login.php

Cum pot face să funcționeze acest lucru? Vă mulțumesc anticipat.

Comentarii

  • Vreo eroare în consola browserului? Lipiți fișierul dvs. login.php și codul și actualizați întrebarea. –  > Por Ataur Rahman Munna.
  • Dacă login.php primește date, atunci nu este vina dumneavoastră ajax. Probabil că nu returnezi nimic în login.php –  > Por Rusty.
  • Fie ca documentația să vă ajute: api.jquery.com/jquery.post –  > Por lumio.
  • Nu ați trimis niciun text / json șir de caractere de la server (login.php). –  > Por Ataur Rahman Munna.
3 răspunsuri
yoeunes

eliminați

let formData = new FormData();
formData.append('username', username.value);
formData.append('password', password.value);

și înlocuiți

data: formData,

cu :

data: {username: username.value, password: password.value}

Comentarii

  • De ce data:formData înlocuiți cu asta? –  > Por Ataur Rahman Munna.
  • Nu folosiți usually cuvântul asemănător aici. Înainte de a argumenta, citiți articolul developer.mozilla.org/en-US/docs/Web/API/FormData/… –  > Por Ataur Rahman Munna.
  • @yoeunes înainte de a-l accepta ca răspuns, ați putea să-mi explicați de ce nu a funcționat obiectul FormData. –  > Por M_Magz.
  • FormData nu este un obiect simplu. Trebuie să treceți FormData.getAll() în loc de FormData, sau să îl treceți direct ca obiect –  > Por yoeunes.
  • faceți acest lucru dacă doriți să trimiteți fișiere împreună cu cererea dvs. cu un contentType:’multipart/form-data’, dar pentru date simple folosiți un obiect simplu ( scuze pentru engleza mea proastă ) – –  > Por yoeunes.
Milan Chheda

Din moment ce aveți deja un form, puteți serialize() și trimite datele în acest mod:

e.preventDefault();
var paramsToSend = {};
paramsToSend['formData'] = $('form').serialize();

$.ajax({
  url: 'login.php',
  type: 'POST',
  data: {params:JSON.stringify(paramsToSend)},
  contentType: false,
  success: function(response) {
    console.log(response);
  },
  error: function() {
    console.log('fail');
  }
})

În partea de server, puteți:

$parameters = json_decode($_POST['params']);

Ataur Rahman Munna

FormData obiectul funcționează perfect aici. Aici am folosit dataType='json' în opțiunile ajax, indicând că ajax așteaptă date json de pe partea serverului.

Iar codul dvs. de pe partea serverului pur și simplu login.php

<?php
    $incoming = array ($_POST['username'],$_POST['password']);
    echo json_encode($incoming);
?>