Jump to content
php.lv forumi

JSON no textarea nedarbojas


Wuu

Recommended Posts

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 by Wuu
Link to comment
Share on other sites

  • Replies 48
  • Created
  • Last Reply

Top Posters In This Topic

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 by Wuu
Link to comment
Share on other sites

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 by Wuu
Link to comment
Share on other sites

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 by jurchiks
Link to comment
Share on other sites

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 by Wuu
Link to comment
Share on other sites

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ē.

Link to comment
Share on other sites

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].

Link to comment
Share on other sites

Š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.  

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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...
Link to comment
Share on other sites

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 by Wuu
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...