Jump to content
php.lv forumi

javascript array -> AJAX -> php -> back to page


Recommended Posts

Situācijas apraksts:

Izmantojot vienkāršu pašrakstītu ajax_request(url) funkciju (atgriež vienam pieprasījumam vienu rezultātu vienam piem. div elementam) līdz šim visu ko gribējās varēju sataisīt, bet lieta kļuva sarežģītāka - vajag lai atgriež masīvu, un lapā dažādās vietās kaut ko izmaina.. t.i. pilnīgi nesaistītos tabulas vai div elementos - massīvs būs ar iepriekš definētiem key tādiem kā 'sender_id' - id no kura elemnta tika pieprasīts (vēlāk to elementu vajadzēs piem. iekrāsot vai mainīt kontentu vispār), tad 'id' - kurā mainīt kaut ko (iespējams, ka šo id pat varētu php pats izdomāt... (panjemt no db utt visādas koda izvirtības...).

Rezultāta masīvā (robainais masīvs) ko php atgrieztu (šeit iespējams būs jāuztaisa JSON failiņš un/vai eval() jāizmanto), tur būs norādes kādus elementus ietekmēs, jaunie innerHTML un atribūti utt...

 

Problēma.. kods...:

tagad man ir nepieciešams izveidot t.s. hello world javascript massīvu lai to lietu izprastu un izmeegjinaat nosuutiit un sanjemt, piemēram:

var js_array = []; //jauns dinamisks massīvs
var js_array['id'] = 'ajax_main_content';
var js_array['param_str'] = '';
var js_array['sender_id'] = '';
var js_array['script_url'] = 'ajax_request.php';

 

un padot to caur kādu no js-ajax funkcijām uz serveri, ideālā variantā to arī ar kādu no php funkcijām saņemt kā masīvu un atgriezt atpakaļ jau apstrādātu masīvu uz lapu, kurā to noķers kāda javascript funkcija un izdarīs pārējo darbu.

 

Tas man vajadzīgs, lai varētu uztaisīt piem. šādu linku:

<a href="java script:js_array['id']='links2';js_array['url']='kautkas.php';js_array['param_str']['param1']='value_dajebkas';rq(js_array);" id='links2' >kaut kas</a>

 

funkcija rq saņemto massīvu kaut kādā veidā nodod (labāk POST, bet var arī GET etc...) to masīvu serverim uz norādīto url kur php to kaut kādā smukā veidā varētu saņemt, ideāli, ja saņem uzreiz kā masīvu un nav nekas jāexplodē vai jāparsē...

nosūtīs arī kura funkcija apstrādās php atgriezto masīvu...

 

vēlāk jāsaņem masīvs un jāiedod noteiktai JS funckijai (tālāk jau pats domāju ka tikšu galā).

 

 

Problēmas rezumē:

Kā to masīvu padot? JS firebug konsole man rāda visādus error, kad gribu tam masīvam no linka pieskirt vērtības... (ok to vel var kaut kā novērst). bet kā nosūtīt to velnu prom?

 

Ja šis te ir jau kaut kur kādā postā izrunāts, lūdzu iemet kāds linku, nevaru pats atrast... google kaut ko saka šajā sakarībā, bet tur dikti gari posti.. lasīšu, bet varbūt kādam ir kāds skripts kas šo dara vai arī kāda cita labu labā ideja ;)

 

Sorry, iespējams iebāzu ne tajā topikā (bet par šo nelamājaties :D labāk pie lietas)

Edited by darksign
Link to post
Share on other sites

Nja ja kādam arī interesē, tad atradu vienu info pirmajā linkā:

 

Javascript Does Not Support Associative Arrays

.....

However… All arrays in Javascript are objects and Javascript's object syntax gives a basic emulation of an associative Array.

......

As a final example, the previous code will work regardless of whether you define associativeArray as an Array ([]), an Object({}), a Regular Expression (//), String(""), or any other Javascript object.

 

The bottom line is -- don't try to use associative arrays, code for what they are -- object properties, not Arrays.

 

Tātad jāsūta js masīvs ar atribūtiem, vai arī js_array['sender_id'] vietā būs js_array[0] utt...

 

bet galvenā prblēma vēl aktuāla... any help?

Link to post
Share on other sites

Nu vienā gadījumā - uzraksti pats savu serializēšanas funkciju, kas paņem javaskripta asociatīvo "masīvu" un uztaisa no tā stringu, piemēram, formā "key1==value1::key2==value2::key3==value3...." (vai kā citādāk - pēc tavas brīvas izvēles).

Un uzraksti analoģisku funkciju php galā, kas šo stringu pārtaisa atpakaļ par asociatīvu masīvu.

 

Līdzīgā veidā arī izdaries uz otru pusi - php serializē un js'ā atserializē.

 

Lielāku performanci droši vien var iegūt, ja jau uzreiz vienā galā taisa asociatīvo masīvu otra gala valodas sintaksē un tai otrā galā izsauc vienkārši evil (kurš dabiski ir evil :)

T.i. php pusē piemēram "masīvu" formē formā {"key1": "value1", "key2": "value2", ... }. Un JS pusē saņemtajam stringam izsauc eval fju. Līdzīgi daries arī uz otru pusi.

 

 

Btw, lai varētu rakstīt šādi:

var js_array['id'] = 'ajax_main_content';
var js_array['param_str'] = '';
var js_array['sender_id'] = '';
var js_array['script_url'] = 'ajax_request.php';

tad pirmajai rindiņai ir jābūt nevis

var js_array = []; //jauns dinamisks massīvs

bet gan

var js_array = {};

 

 

bet galvenā prblēma vēl aktuāla... any help?

Pacenties iemācīties pagaidīt. Nevienam te nemaksā par 24h uzturēšānos onlainā. Tāpēc pagaidi vairāk kā pusstundu pirms atkārtoti help-help rakstīt.

Link to post
Share on other sites
×
×
  • Create New...