Moi. Osaiskohan joku neuvoa missä mättää, kun lähetän tietoja ajax postilla, niin käsittelijälle tulee pelkät arvot yhteen pötköön ja hukkaa avaimen? Käytän zendiä ja jqueryä. Tämäkin on toiminut ennen, mutta nyt vaan ei rokkaa. Vähän koodia malliksi:
var dataArray = $("#employee").serializeArray(); var data = {}; data.name = dataArray[1].value; data.address = dataArray[2].value; data.phone = dataArray[3].value; data.email = dataArray[4].value; data.password = dataArray[5].value; data.employee_id = dataArray[6].value; $.post("employee/add",data);
Js debuggerilla, niin post kohdassa data objekti näyttää tältä:
address: "moi" email: "moi" employee_id: "moi" name: "moi" password: "moi" phone: "moi"
Eli näyttäis olevan kunnossa, mutta heittää 500 interval server erroria, ja kun php näyttää tältä:
public function addAction() { // action body $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); if($this->getRequest()->isPost()) { $table = new Application_Model_Employee(); $result = $this->getRequest()->getPost(); file_put_contents('debug.txt', $result); $table->addEmployee($result['name'], $result['address'], $result['phone'], $result['email'], $result['password'], $result['employee_id']); } }
Jolloin debug.txt näyttää "moimoimoimoimoimoi" eli jostain syystä avain hukkuu.
Jos vaikka opettelisit käyttämään file_put_contents-funktiota ja taulukkomuuttujia, voisit saada järkeviä tuloksia. Kokeile vaikka jotain seuraavista:
file_put_contents("debug.txt", json_encode($result)); file_put_contents("debug.txt", var_export($result, 1)); file_put_contents("debug.txt", print_r($result, 1));
Lisäksi voisit viisastua, jos katsoisit, mikä virheilmoitus palvelimella tulee.
Opetellaas sitte oikein. json encode näyttää tältä:
{"name":"moi","address":"moi","phone":"moi",
var_export näyttää tyhjää ja print_r tulostaa 1
Json encode näyttää oikealta, mutta jokin mättää. Kantaan "vienti" on oikein, eli tiedot menee oikeassa järjestyksessä moduulin funktiolle eikä ole kirjoitusvirheitä. $.post.success() toteutuu virheilmoituksesta huolimatta.
EDIT: Nyt tallentuu kantaan (employee_id ja role_id on kannassa tyyppiä int, mutta en implementoinu niitä ennen syöttöä), mutta nyt kaikki arvot on pelkästään merkki {, paitsi numerot on 0
Lisäys: Ratkesi. Eli alkuperäinen oli ihan oikein, lukuunottamatta int muunnokksia. Kun poisti json encoden käytöstä, rupesi toimimaan.
Teet tuon serialisoinnin JavaScriptillä suotta liian monimutkaisesti. Jo heti jQueryn post-metodin dokumentoinnissa on seuraava esimerkki:
$.post('foo.php', $('#form').serialize());
runeberg kirjoitti:
var_export näyttää tyhjää ja print_r tulostaa 1
Ilmeisesti muutit esimerkkejä omin nokkinesi ja poistit niistä funktioiden toiset parametrit. Älä tee muutoksia, jos et ymmärrä.
runeberg kirjoitti:
Lisäys: Ratkesi. Eli alkuperäinen oli ihan oikein, lukuunottamatta int muunnokksia. Kun poisti json encoden käytöstä, rupesi toimimaan.
Mitä ihmettä? :D Olikin aivan uusi idea, että korvattaisiin muuttujan oikea sisältö debug-tulosteella. Mitähän oikein kuvittelit tekeväsi?
:D
Metabolix kirjoitti:
Ilmeisesti muutit esimerkkejä omin nokkinesi ja poistit niistä funktioiden toiset parametrit. Älä tee muutoksia, jos et ymmärrä.
Juu, oli oma moka, en heti huomannu noita parametrejä, sain kyllä myöhemmin tulostettua, mutta en jaksanu lisäillä siitä tietoa tänne.
Metabolix kirjoitti:
runeberg kirjoitti:
Lisäys: Ratkesi. Eli alkuperäinen oli ihan oikein, lukuunottamatta int muunnokksia. Kun poisti json encoden käytöstä, rupesi toimimaan.
Mitä ihmettä? :D Olikin aivan uusi idea, että korvattaisiin muuttujan oikea sisältö debug-tulosteella. Mitähän oikein kuvittelit tekeväsi?
Eli jos sinä mitään ymmärrät, niin alunperinkään mitään vikaa post arrayn muodossa ollut, vaan ennen kantaan tallennusta piti "muuntaa" int tyyppiseksi. Tuo debug sekoilu tuli vasta kun en sitä vikaa huomannu ja yritin sitä selvittää ja solmuun se meni vasta noiden taulukkomuuttujien käytöstä. Mutta joo, en jaksa selittää tarkemmin, kun täällä jotkut haluaa käsittää asiat kuitenkin väärin.
HAHAHA, teit virheen.
qeijo kirjoitti:
HAHAHA, teit virheen.
Äitiski teki
HAHAHA, teit virheen = sarkasmia.
qeijo kirjoitti:
HAHAHA, teit virheen = sarkasmia.
Mun mielestä toi ei nyt ole kauheen hyvää sarkasmia.
lainaus:
Sarkasmi tarkoittaa pidemmälle vietyä suppeaa, jopa yhden lauseen huumoria tai purevaa ivaa.
Et lähinnä, jos olisit sanonu päinvastoin "Aika jännä juttu ettei toiminu, ku se oli noinkin hyvin tehty", olis ollu enemmän sarkastisempaa.
Lebe80 kirjoitti:
qeijo kirjoitti:
HAHAHA, teit virheen = sarkasmia.
Mun mielestä toi ei nyt ole kauheen hyvää sarkasmia.
lainaus:
Sarkasmi tarkoittaa pidemmälle vietyä suppeaa, jopa yhden lauseen huumoria tai purevaa ivaa.
Et lähinnä, jos olisit sanonu päinvastoin "Aika jännä juttu ettei toiminu, ku se oli noinkin hyvin tehty", olis ollu enemmän sarkastisempaa.
Ei jumalauta... Oikeasti tosissaas? "Mun mielestä toi ei nyt ole kauheen hyvää sarkasmia.", hahaha.
Piristit tylsän työpäivän. :D :D :D
ps.
FU
<3
Hyvä että olin avuksi
Satunnainen postaaja kirjoitti:
Ehdotan <sarcasm> -tagin lisäämistä HTML5-standardiin väärinkäsitysten vähentämiseksi netissä
W3C kirjoitti:
<sarcasm>Erinomainen ajatus</sarcasm>
Grez:
<facebook-like-button>Like</facebook-like-button>
<sarcasm>Kannatan</sarcasm>
Aihe on jo aika vanha, joten et voi enää vastata siihen.