Jump to content
php.lv forumi

.get un divi varianti


Recommended Posts

Posted (edited)

Situācija sekojoša: .get var saņemt divu tipu datus: html rindu vai json masīvu

kā man atšķirt kas tika atgriezts?

Rakstīju kodu pārliecībā ka $.isarray(data) palīdzēs, bet nekā...

 

$.get("findproduct.fnc.php?id="+$("#id").val(),
  function(data){
 	if (data!=0) {
  	if (data.id){ // nestrādā
  	if ($.isarray(data)){ // arī nestrādā
...

 

php atgriež {"id":"4008146456602"}, ja nu kas

Edited by aika
Posted

pieliec papildu parametru kurš tad informētu kādā formātā vēlas saņemt datus no findproduct.fnc.php

$.get("findproduct.fnc.php?cType=json vai html&id="+$("#id").val(),
  function(data){
   	if (data!=0) {
   	if (data.id){ // nestrādā
   	if ($.isarray(data)){ // arī nestrādā
...

Posted (edited)

nav zināms kādā formātā datus atgriezīs (ja tiek atrasts viens ieraksts - tad jsons, ja vairāki, tad html tabula)

šajā galā vajag tikt skaidrībā kas tika padots.

Edited by aika
Posted

Paldies, arī variants. Tātad tomēr nav tik vienkārši. Turklāt pamanīju ka izslavētais datatype Intelligent Guess arī manā gadījumā nemaz json neatpazīst. Tāpēc nācās ielikt .get ar , "json" un padot arī html kā json array

Posted

Nu jā, JSON kā tāds nav datu tips. Tas ir kkāds datu tips pārtaisīts par stringu.

Posted

daGrevis - da tur jau tā lieta ka jquery apgalvo ka atpazīs: dataTypeThe type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).

briedis: da tā arī izdarīju jau :) !

Posted

Problēma jāmeklē ir cēlonī - kāpēc vispār ir tā, ka var uz tiem pašiem parametriem atgriezt gan JSON gan HTML? Manuprāt, tas ir ļoti neintuitīvi un izklausās pēc "coding by coincidence". Salabo kodu tā, lai tu vienmēr zini, kas tiks atgriezts, attiecīgi, pievieno kādu parametru, kas norāda, kāds tips ir jāatgriež kurā gadījumā, un tu zināsi kāds tips ir jānorāda pie $.ajax.

Posted

nu bet normāli ka meklēšanas rezultāts var būt gan viens, īstais, gan vairāki līdzīgie ieraksti. līdz ar to, manuprāt, tīri normāli ir php pusē sagatavot atbildi, kuru pasniegt! Ja tā ir datu rinda ko ievietot formā, tad rinda, ja tas ir atlasīto variantu saraksts, tad html sagatvots saraksts. Ja jau .get piedāvā tādu iespēju. Galu galā ja es pērku ķieģeli, kuru reklamē kā gan stāvošu, gan guļošu, jocīgi ir to tomēr mūrēt tikai guļošu, jo stāvēt viņam nesanāk :)

Posted

Ja ir viens ieraksts, ieliec to masīvā.

Ja ir vairāki ieraksti, tas jau būs masīvs.

 

Masīvu vienmēr JSON enkodē.

Posted

Nu ok, bet tad arī padod parametru kādu atbildi tu sagaidi - json vai html un attiecīgi to pašu liec ajax pieprasījumā.

 

$.get(url, {data : data, type : 'json'}, function(){}, 'json');
$.get(url, {data : data, type : 'html'}, function(){}, 'html');

 

Nevis tā, ka tu nezini kas tieši tiks atgriezts.

Posted (edited)

Nu bet normāli ka meklēšanas rezultāts var būt gan viens, īstais, gan vairāki līdzīgie ieraksti.

 

Ja ir viens īstais taisi masīvu ar vienu elementu, bet ja ir vairāki, tad taisi masīvu ar vairākiem elementiem un vienmēr nosūti to masīvu kā JSON virkni. Tad arī nosaki cik Tev ierakstu ir masīvā viens vai vairāki un tas atbilstoši to apstrādā.

 

Cik saprotu no aprakstītā, tad jau php pusē Tu uzreiz saproti, kas tiek padots, tātad vari to izveidot tā, ka JSON virknē tiek padoti divi mainīgie: tips un saturs, atbilstoši tips norāda vai tas ir vienkāršs teksts, vai html saraksts, otrajā mainīgajā tad Tu padot pašu tekstu vai htmlu un tad, saņemot JSON, ar JavaScript pārbaudi tipu un atbilstoši tam apstrādā saturu.

Edited by Maris-S

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