Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ Przekazanie dodatkowych zmiennych obok $_POST

Napisany przez: gucio1 28.03.2018, 15:20:11

Witam,
mam taki kod:

  1. $('#form1').on('submit', 'form.addProductToCart', function (event) {
  2. event.preventDefault();
  3.  
  4. $.ajax({
  5. url: 'cart.php',
  6. method: 'POST',
  7. data: $(this).http://www.php.net/serialize()
  8. })
  9. .done(function (data, textStatus, jqXHR) {
  10.  
  11. });
  12. });


Do pliku cart.php przekazuje wysłane zmienne z formularza.
Zamiast zmiennych z formularza chciałbym przekazać tam już w kodzie JS 2 zmienne np. zmienna1 i zmienna2.
Czyli coś takiego:

  1. $('#form1').on('submit', 'form.addProductToCart', function (event) {
  2. event.preventDefault();
  3.  
  4. $.ajax({
  5. url: 'cart.php',
  6. method: 'POST',
  7. zmienna1 = "wartosc"
  8. zmienna2 = "123"
  9. })
  10. .done(function (data, textStatus, jqXHR) {
  11.  
  12. });
  13. });


I chciałbym to odbierać fomularzem albo GET'em albo czymkolwiek innym. Jak tego dokonać?

Napisany przez: Pyton_000 28.03.2018, 15:22:25

Jeśli getem to dodaj po prostu do URL te zmienne

Napisany przez: gucio1 28.03.2018, 15:23:10

w sumie nie wpadłem na to.
A jeśli nie Getem?

Napisany przez: markuz 28.03.2018, 15:23:14

Kod
var data = $(this).serialize();
data['a'] = 5;
data['b'] = 10;

        $.ajax({
            url: 'cart.php',
            method: 'POST',
            data: data
        })

Napisany przez: gucio1 28.03.2018, 15:26:01

I potem odbieram to w pliku jak $_POSTEM czy jak?

Napisany przez: Pyton_000 28.03.2018, 15:27:16

albo

Kod
var data = {
    'a': 5,
    'b': 10,
};
$.ajax({
    url: 'cart.php',
    method: 'POST',
    data: $(this).serialize().concat(data)
})

Napisany przez: gucio1 28.03.2018, 15:29:11

Dzięki, tylko własnie jak to potem odbieram? smile.gif

Napisany przez: Pyton_000 28.03.2018, 15:33:56

skoro nie GETem to POSTem

Napisany przez: gucio1 28.03.2018, 16:31:09

Kurcze nie wiem smile.gif
mam odbierać $_POST['a'] i $_POST['b'] questionmark.gif

bo coś nie idzie tak

Napisany przez: nospor 28.03.2018, 16:35:09

No to moze pokaz jak odbierasz, gdzie odbierasz i co potem z tym robisz...

Napisany przez: Pyton_000 28.03.2018, 16:40:20

I jaki problem sobie zrobić var_dump($_POST) i zobaczyć co tam masz?

Napisany przez: gucio1 28.03.2018, 16:40:48

  1.  
  2. http://www.php.net/header("Content-Type: application/json;charset=utf-8");
  3.  
  4. http://www.php.net/echo json_encode([
  5. 'cart' => $_POST['a'],
  6.  
  7. ]);
  8.  

Napisany przez: nospor 28.03.2018, 16:43:13

No i sprawdzales co to zwraca?
A najlepiej zrob var_dump calego POST jak napisal Pyton

Napisany przez: gucio1 28.03.2018, 17:18:52

W sumie źle trochę się wyraziłem bo w tym przypadku nie chcę nic wysyłać $_POSTem tylko po prostu przekazać do ajaxa 2 zmienne bez wysyłania formularza.
Tak jakby uruchomić ajaxa clickiem a nie sumbitem.
I wtedy jak tu odebrać te dane tongue.gif

Napisany przez: Pyton_000 28.03.2018, 17:20:21

tak samo?

Napisany przez: gucio1 28.03.2018, 17:23:17

Pomyślałem że nie da się wywołać tego var_dump($_POST) kiedy nie wysyła się formularza smile.gif
To serio nie wiem jak wywołać ten var_dump. Kombinowałem na kilka sposobów i dajcie proszę jakąś podpowiedź

Napisany przez: nospor 28.03.2018, 18:44:35

Cytat
Tak jakby uruchomić ajaxa clickiem a nie sumbitem.

No to odpal tego ajaxa clickiem a nie submitem. No jaki problem?

Napisany przez: gucio1 11.04.2018, 13:08:34

Problem leży w tym że nie mogę odebrać tych danych $_POSTem.
W tym naszym przykładzie zmienne nazywają się "a" i "b" próbuje w sposób $_POST['a'] i nie wiem czy powininem do tego dodać jakiś przedrostek lub odczytać to w specyficzny sposób. A na przy formularzu wysyłanym przez AJAX nie mogę wywołać tego var_dump.

Napisany przez: nospor 11.04.2018, 13:43:51

Cytat
A na przy formularzu wysyłanym przez AJAX nie mogę wywołać tego var_dump.
A kto ci broni?

Napisany przez: gucio1 12.04.2018, 11:47:22

No nikt ale kiedy próbuje go wywołać nie mam żadnego zwrotu

Napisany przez: nospor 12.04.2018, 11:52:43

Uzywasz narzedzi developerskich w przegladarce? Masz tam wszystkie AJAX jakie ida oraz co zwracaja

Napisany przez: gucio1 12.04.2018, 12:34:13

Spoko sprawdziłem na dobrym kodzie z AJAXem, faktycznie widać jakie dane idą i jakie się zwracają.
W przypadku użycia kodu:

  1. var data = $(this).http://www.php.net/serialize();
  2. data['a'] = 5;
  3. data['b'] = 10;
  4.  
  5. $.ajax({
  6. url: 'cart.php',
  7. method: 'POST',
  8. data: data
  9. })


żadne dane nie idą. Może nie dodałem czegoś przed tymi instrukcjami albo po? Może brakuje gdzieś przecinka? średnika??
Nie mam już pomysłów.

Jeszcze sprawdziłem ten przykład:
  1. var data = {
  2. 'a': 5,
  3. 'b': 10,
  4. };
  5. $.ajax({
  6. url: 'cart.php',
  7. method: 'POST',
  8. data: $(this).http://www.php.net/serialize().concat(data)
  9. })


W tym przypadku idzie: [object Object]:
Podejrzewam że gdzieś jest mały błąd.

Napisany przez: aras785 12.04.2018, 12:55:12

Przykład 2:

  1. var data = {
  2. 'a': 5,
  3. 'b': 10,
  4. };
  5. $.ajax({
  6. url: 'cart.php',
  7. method: 'POST',
  8. data: data
  9. })


Przykład 1:

  1. $('#form1').on('submit', function(event) {
  2. event.preventDefault();
  3. var data = $(this).serializeArray();
  4. data.push({name: "a", value: 5});
  5. data.push({name: "b", value: 10});
  6. console.log(data);
  7. $.ajax({
  8. url: 'cart.php',
  9. method: 'POST',
  10. data: data
  11. })
  12.  
  13. });


https://jsfiddle.net/vwqvb983/

Napisany przez: gucio1 14.04.2018, 10:14:18

Wystarczyło zmienić w drugim przykładzie to:
data: $(this).serialize().concat(data)

na:

data:data

I wszystko pięknie śmiga. Nie wiem czego z tym "concat" nie działało. Ale ok wielkie dzięki tak myślałem że to głupi błąd wink.gif

Napisany przez: LowiczakPL 19.04.2018, 14:01:17

Cytat(gucio1 @ 14.04.2018, 11:14:18 ) *
... Nie wiem czego z tym "concat" nie działało....


concat dodaje element lub tablicę do tablicy a nie stringa, a serialize zwraca stringa, dlatego nie zadziałało

Napisany przez: nospor 19.04.2018, 14:08:59

@Lowiczak co bys sie nie zdziwil....
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat

A nie dzialalo bo do zserializowanego tekstu nie mozesz od tak sobie dodac innego tekstu i nie naruszyc struktury porpzedniego

Napisany przez: LowiczakPL 19.04.2018, 14:16:25

ale data nie jest u niego stringiem, jego zwrotka to było [object Object]

Napisany przez: nospor 19.04.2018, 14:23:24

Cytat
concat dodaje element lub tablicę do tablicy a nie stringa
Jak juz napisalem, concat dziala tez na stringach.

zas u niego data w pewnym momencie bylo tez stringiem. Wystarczy przejrzec jego poprzednie kody. Tak czy siak mial sieczke

edit: choc w sumie w przykladzie do ktorego sie odwolywal faktycznie mial object smile.gif Hehe, wyszlo w sumie na twoje smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)