Wuu Posted May 12, 2014 Report Share Posted May 12, 2014 (edited) PHP lasa onclick="send({'api':'test'});" PHP nelasa to pašū kodu no textarea "{'api':'test'}" onclick="send($('#API_console').val());" Cik saprotu pirmajā gadījuma send funkcija nosūta objektu,bet otrajā tekstu? Nosūtu ar $.getJSON Edited May 12, 2014 by Wuu Quote Link to comment Share on other sites More sharing options...
Kavacky Posted May 12, 2014 Report Share Posted May 12, 2014 echo '<pre>'; print_r($_REQUEST); die; Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 12, 2014 Author Report Share Posted May 12, 2014 (edited) Slikti izskaidroju, dati aiziet uz PHP. Bet nelasās kā JSON's, bet gan kā teksts. Vispār stulbs jautājums,noteikti pie vainas kaut kāds magicqoutes, vai citi liekie simboli kas tiek pievienoti... Edited May 12, 2014 by Wuu Quote Link to comment Share on other sites More sharing options...
gurkjis Posted May 12, 2014 Report Share Posted May 12, 2014 Lai PHP pusē lasītos kā JSON, Tev tas saņemtais strings jānoparsē.. ar json_decode() Quote Link to comment Share on other sites More sharing options...
indoom Posted May 12, 2014 Report Share Posted May 12, 2014 onclick="send({api: $('#API_console').val()});" Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 12, 2014 Report Share Posted May 12, 2014 Neieteiktu izmantot in-line handlerus. Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 12, 2014 Author Report Share Posted May 12, 2014 (edited) Iespējams nepareizi uzdevu jautājumu, tāpēc atbildes man nepalīdzēja. (Var iztikt bez kritikas, jo apzinos savu līmeni pats). Atbilde PHP neapstrādā pa taisno JSON kodu. Otrkārt jānodrošinās, ka no visām pusēm ir īsts JSON, nevis kaut kāda padjobka. Ar GET to nemaz nevar panākt. (Cik saprotu) Kods kas darbojas. Šeit būtu jābūt PHP kodām, bet to diemžēl nerāda... WTF? http://pastebin.com/H1sjPAMR un html... <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <style> img { height: 100px; float: left; } </style> <script src="//code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <textarea id="tekstablakis"></textarea> <div id="izvade"></div><button id="button" value="POGA" /> <script> $("#button").click(function(){ var data = JSON.parse($("#tekstablakis").val()); $.ajax({ url: "http://xxxx.com/text.php", type: "POST", dataType: "json", data: JSON.stringify(data), contentType: "application/json; charset=UTF-8", success: function(recive){ $("#izvade").html(recive.data); } }); }); </script> </body> </html> Būšu pateicīgs ja kāds mani nolamās (un parādīs pareizo ceļu), ja šajā piemērā kļūdos. Edited May 12, 2014 by Wuu Quote Link to comment Share on other sites More sharing options...
jurchiks Posted May 12, 2014 Report Share Posted May 12, 2014 (edited) Sorry, bet man liekas, ka tu kaut ko nesaproti. Servera pusē tu datus saņemsi $_POST masīvā (type: "POST"). Tas, ko tu atgriezīsi atbildē, tiks parsēts kā JSON (dataType: "json"), kas nozīmē, ka tev jāizvada atbilde ar json_encode($responseData). Vispār tev tur darās drūmākais stulbums. Kāda vella pēc tu izmanto "php : //input"? (WTF, bez atstarpēm ap kolu neļauj nopostot, dzēš līniju ārā...) JavaScript: $("#button").on('click', function() { $.ajax({ url: "/text.php", type: "POST", data: { text: $("#tekstablakis").val() }, dataType: "json", success: function(response) { $("#izvade").html(response.data); } }); }); PHP (text.php): header('Content-type: application/json'); $response = ''; if (isset($_POST['text'])) { // dari kaut ko ar $_POST['text'] $response = array('data' => $_POST['text']); } echo json_encode($response); Edited May 12, 2014 by jurchiks Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 12, 2014 Author Report Share Posted May 12, 2014 (edited) Jā, bet tavā piemērā tu nenosūti īstu JSON, bet parastu POST! Tavā variantā nemaz "json_decode" nestrādātu. Manā variantā tu burtiski vari rakstīt tīru JSON textarea un tas tiks pareizi apstrādāts. Vai ne tā? Edited May 12, 2014 by Wuu Quote Link to comment Share on other sites More sharing options...
briedis Posted May 12, 2014 Report Share Posted May 12, 2014 Jā, bet tavā piemērā tu nenosūti īstu JSON, bet parastu POST! Tavā variantā nemaz "json_decode" nestrādātu. Manā variantā tu burtiski vari rakstīt tīru JSON textarea un tas tiks pareizi apstrādāts. Vai ne tā? Nope. Post dati principā ir strings. Viss atkarīgs no tā, kā tu interpretē to PHP pusē. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted May 12, 2014 Report Share Posted May 12, 2014 Parasti, ja ir vēlme uztaisīt API un ir nepieciešams kaut ko saglabāt ( izveidot, update-ot - būtībā gandrīz viss ne-GET ) tad dati tiek sūtīti kā request body un diemžēl ir nepieciešams izmantot file_get_contents("php: //input"); ( protams bez atstarpes, bet šim forumam nepatīk tas strings ). Vai arī var izmantot http_get_request_body(), bet tam nepieciešams extension. Tādēļ Wuu piemērs patiesībā ir OK. Taisnība gan, ka tas neizskatās pēc mega-API un tik pat labi var sūtīt JSON kā vienkāršu parametru, jo tā varētu būt vieglāk + [tas ko briedis saka]. Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 13, 2014 Author Report Share Posted May 13, 2014 Šobrīd leju pamatus nelielam API. Bet, nesaprotu, ja šis ir vienīgais un patiesais variants apmainīties ar īstu JSON, kāpēc visi to neizmanto? Tīrus stringus mētāt, tak ir vieglāk ar prastu GETu. Quote Link to comment Share on other sites More sharing options...
briedis Posted May 13, 2014 Report Share Posted May 13, 2014 Tehniski GET no POST ne ar ko neatšķiras, vnk GET ir iekļauts urlī, bet POST kā http headeris tiek padots. Saproti, ka datu tipi eksistē tikai JS un PHP galā, kamēr tu sūti, nekāda informācija par tipiem nesūtās, viss ir strings. Atkārtošos, ka viss ir atkarīgs no tā, kā tu pats interpretē šos datus :) Tāpēc jau ir tāds json_decode iekš php.. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted May 13, 2014 Report Share Posted May 13, 2014 Parasti, ja ir vēlme uztaisīt API un ir nepieciešams kaut ko saglabāt ( izveidot, update-ot - būtībā gandrīz viss ne-GET ) tad dati tiek sūtīti kā request body un diemžēl ir nepieciešams izmantot file_get_contents("php: //input"); ( protams bez atstarpes, bet šim forumam nepatīk tas strings ).Man jau likās, ka spaisiku aizliedza... Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 13, 2014 Author Report Share Posted May 13, 2014 (edited) Saproti, ka datu tipi eksistē tikai JS un PHP galā, kamēr tu sūti, nekāda informācija par tipiem nesūtās, viss ir strings. Atkārtošos, ka viss ir atkarīgs no tā, kā tu pats interpretē šos datus :) Tāpēc jau ir tāds json_decode iekš php.. Es saprotu ka biti arī uz Marsa ir biti. Bet sūtot stringu abos galos ir jāizlokās, jo nevar izmantot funkcijas paraudzētas JSON apstrādei. jason_decode neņem pretī stringu, vismaz cik mēģināju. Vismaz tagad, ar php iebūvētām funkcijām, var kaut mazliet validēt datu struktūru ko saņemšu. Edited May 13, 2014 by Wuu Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.