AJAX post üres

AJAX post üres
2014-09-02T07:49:49+02:00
2014-09-02T08:10:07+02:00
2022-10-15T22:26:28+02:00
Vargab
Lehet triviális vagyok, vagy csak nem látom a fától az erdőt...

Adott a form, ami submitját ajax-al küldöm. A gondom az, hogy ha simán küldöm, bemegy a post, ha ajaxal küldöm, post metódusként szerepel a logokban a kérés, de a $_POST üres. a php://input pedig tartalmazza az adatoakt amit küldtem...

Ilyenkor mi van?

<form id="etickets" action="<?php echo HOST_BASIC_URL.'res/process_backend_etickets.php';?>" method="post"> .... </form> ... ... $('form#etickets').live('submit',function(e){ e.preventDefault(); $(this).addClass('refresh'); var f = $(this); $.ajax({ type:f.attr('method'), async:false, cache:false, url:f.attr('action'), data:f.serialize(), contentType: "application/json; charset=utf-8", success: function(data) { if (data.msg) alert(data.msg); if (data.err) errorbox($(this),data.err); if (data.reload) location.reload(); }, error:function(jqXHR, textStatus) {alert( "Hiba történt az adatmentéskor: " +jqXHR.status + textStatus );} }); $(this).removeClass('refresh'); });
Ugyan ezt a sémát alkalmazom már régóta, de most először fordult elő, hogy nem jó valami.
var_dump: GET,POST,QUERY üres.
ha a form-ban a method="get", működik szépen, ha a method="post" akkor meg a php oldalon az $_POST üres, pedig a webszerver (nginx) POST kérésként logolja és afirebug szerint is az. A sima post beküldés meg jó.

Mi a nem tuti itt az ajax-ban szerintetek?
Mutasd a teljes hozzászólást!
ÁÁÁ!

A fától az erdőt effektus történt, én kérek elnézést:

contentType: "application/json; charset=utf-8"
paraméter az AJAX-ban az inputot típusosítja, ami jelen esetben nem jó, mert az input a serialize() alapján string és nem json.

Elírtam sajnos a scriptet és nem vettem észre a nagy keresésben, hogy nekem a JSON válaszok feldolgozásához a dataType-ot kell típusosítanom

De most, hogy ilyen nagy feneket kerítettem neki, megtaláltam :)
Mutasd a teljes hozzászólást!

  • contentType: "application/json; charset=utf-8",

    Nem nagyon értek a PHP-hoz, de ha a kérés azt mondja magáról, hogy a törzse JSON, valószínű a szerver oldal meg sem próbálja hagyományos form adatként parse-olni. Vagy ki kéne hagyni az idézett sort, vagy így átírni:

    contentType: "application/x-www-form-urlencoded",
    és akkor a kérés fejléce tényleg a törzs igazi típusát jelezné.
    Mutasd a teljes hozzászólást!
  • ÁÁÁ!

    A fától az erdőt effektus történt, én kérek elnézést:

    contentType: "application/json; charset=utf-8"
    paraméter az AJAX-ban az inputot típusosítja, ami jelen esetben nem jó, mert az input a serialize() alapján string és nem json.

    Elírtam sajnos a scriptet és nem vettem észre a nagy keresésben, hogy nekem a JSON válaszok feldolgozásához a dataType-ot kell típusosítanom

    De most, hogy ilyen nagy feneket kerítettem neki, megtaláltam :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd