Զանգվածի փոխանցում Javascript-ից php ajax-ին: Փոփոխական Լավագույն միջոց՝ զանգված փոխանցելու PHP-ի և Javascript-ի միջև
Ես ունեմ ֆայլ php ընդլայնմամբ: Այստեղ ես կարդացել եմ տվյալների բազայից ստացված տեղեկատվությունը։ Եվ ես պետք է փոխանցեմ այս տվյալները (կապված զանգված) js-ին, որը նույնպես ներառված է այս php ֆայլում:
"; var_dump ($arr); echo ""; ) // բեռնել տվյալները տվյալների բազայից $query = R::getAll("SELECT * հարցերից"); var_dump1 ($query); ?>
array(5) ( => array(7) ( ["id"]=> string(1) "1"["question"]=> string(143) "Աղյուսակի ______________ օգտագործվում է ձևավորումը փոփոխելու համար. աղյուսակ, ինչպես դաշտի անվանումը փոխելը կամ դաշտի տվյալների տեսակը փոխելը։"["answer1"]=> string(14) "Datasheet View"["answer2"]=> string(11) "Desisn View" ["answer3"]=> string(10) "Sable View"["answer4"]=> string(11) "Wizard View"["true_answer"]=> string(1) "1") => array(7 ) ( ["id"]=> string(1) "2"["question"]=> string(83) "Դիզայնի տեսքով կարող եք ընտրել աղյուսակի մի քանի դաշտեր՝ օգտագործելով ________ ստեղնը։"["answer1" ]=> string(3) "Alt"["answer2"]=> string(8) "Spacebar"["answer3"]=> string(5) "Shift"["answer4"]=> string(4) " Ctrl"["true_answer"]=> string(1) "3") ... Uncaught SyntaxError. բացակայում է) փաստարկների ցանկից հետոԵզրակացություն:
Այսպիսով php կողմըԱմեն ինչ լավ է. Բայց երբ մենք փորձում ենք վերլուծել այս զանգվածը js մասի js օբյեկտի մեջ, տեսնում ենք տարօրինակ սխալ։
- Ինչպես բեռնել տվյալները (ինչպես իմ դեպքում կապված զանգվածը) php-ից js: Երբ php-ը և js-ը գտնվում են նույն ընդլայնման (php) ֆայլում:
- Ինչպես բեռնել տվյալները (ինչպես իմ դեպքում կապված զանգվածը) php-ից js: Երբ php-ը և js-ը միացված են տարբեր ֆայլեր. Օրինակ, մենք ունենք 1 ֆայլ php ընդարձակումներ, որում մենք իրականացրել ենք տրամաբանությունը (իմ դեպքում դա DB է)։ Եվ մենք պետք է այս տվյալները ներմուծենք js ընդլայնման ֆայլ:
Լուծում
1) Այն ամենը, ինչ դուք պետք է անեք, հետևյալն է.
JSON = JavaScript Object Notation... այն արդեն ձևաչափով է, որը կարող է վերագրվել փոփոխականին՝ Javascript-ում օգտագործելու համար:
Մինչդեռ այն «const»-ին վերագրելը, հավանաբար, լավ գաղափար չէ, քանի որ այն օբյեկտ է, բայց ես հենց այնպես եմ կարդում դրանք, և դա դեռ հիանալի է. Լրացուցիչ տեղեկություններ:
2) Եթե դուք կանչում եք php ֆայլ js-ից (ala ajax), ապա կարող եք վերադարձնել չմշակված JSON php վերադարձից, և կախված նրանից, թե ԻՆՉՊԵՍ եք կատարել ձեր ajax զանգը (և որ գրադարանով, օրինակ, գուցե jquery-ով) ... կարող եք կամ գուցե կարիք չունենա անել JSON.parse(returnData): Բավարար տեղեկատվություն չկա այն մասին, թե ինչպես եք ուզում դա անել՝ հստակ պատասխան տալու համար:
Այլ լուծումներ
Դուք պետք է սովորեք JSON-ի մասին:
Սա շարահյուսություն է, որը կարող է վերլուծվել ցանկացած լեզվով, ներառյալ JS-ը:
պարզապես փոխանցեք ձեր զանգվածը PHP-ից ձեր JacaScript կոդին այսպես.
Սովորաբար ձեր php կոդը կարտացոլվի html էջում: Այս էջում դուք կարող եք տվյալների կառուցվածքը ըստ ձեր կարիքների: Օրինակներ (ձեր php կոդում).
// որպես js - փոփոխական.
հարցերը կլինեն գլոբալ JS փոփոխական, որին կարող եք հասնել
մեկ այլ js.file-ից կամ html ֆայլում ներկառուցված js-ից:
// Որպես տվյալներ ձեր html-ում. // Then fetch this data using js-code, eg in a different js-file: alert(document.getElementById("id_questions").value()); !}
Սա կարելի է ձեռք բերել նաև արտաքին js ֆայլից կամ js-ից, որը ներկառուցված է ձեր php կոդից html թողարկման մեջ:
AJAX և jQuery: Պարամետրերի փոխանցում PHP-ից JavaScript-ին: Օգտագործելով JSON
(փոփոխվում է 12/10/2012)
Նրանք, ովքեր ծրագրավորում են AJAX հավելվածները, հաճախ բախվում են PHP-ից կամ ծրագրավորման այլ լեզվից պարամետրեր JavaScript-ին փոխանցելու հետ կապված խնդիրներին: Սովորաբար, սա տվյալների փոխանցում է տվյալների բազայից, որին հասանելի է միայն սերվերի սկրիպտը: Ինչպե՞ս կարող եմ դրանք ցուցադրել հաճախորդի համակարգչում՝ առանց էջը վերաբեռնելու: Ահա թե ինչի մասին է այս հոդվածը:
Մի քանի խոսք JSON-ի (JavaScript Object Notation) մասին: Սա տեքստի վրա հիմնված տվյալների փոխանակման արձանագրություն է, որը փոքր-ինչ նման է ավելի ծանոթ XML-ին, սակայն տվյալները գրված են ավելի կոմպակտ: Այն ի սկզբանե մշակվել է JavaScript-ի կարիքների համար (այստեղից էլ՝ անվանումը), սակայն այժմ ավելի լայնորեն օգտագործվում է։
Օրինակ, եթե մենք ուզում ենք զանգված գրել PHP-ից JSON, ապա դա տեղի է ունենում:
Աղբյուրի զանգված.
$n = զանգված ("Min" => 15, "Sec" => 44);
Նույն զանգվածը JSON ձևաչափով.
(«Min»: «15», «Sec»: «44»)
JSON ձևաչափի և դրա հավելվածների մանրամասն նշումը ծրագրավորման տարբեր լեզուների համար հասանելի է http://www.json.org/ կայքում:
Դիտարկենք մի պարզ օրինակ, որը բաղկացած կլինի երկու ֆայլից:
Առաջին ֆայլը կլինի PHP սկրիպտ, որը կստեղծի JSON գրառում, որը պարունակում է ընթացիկ րոպեները և վայրկյանները:
Երկրորդ ֆայլը կլինի HTML էջ, որը պարունակում է JavaScript-ի օգտագործումը jQuery գրադարաններ, որը կկանչի PHP սկրիպտը 1 վայրկյան ընդմիջումներով, կստանա JSON ձայնագրությունը և դրա բովանդակությունը դուրս կբերի վեբ էջի կոնտեյներ:
Ֆայլ #1. json.php
header("Content-Type: application/x-javascript; charset=utf8"); $n = array("Min" =>ամսաթիվ ("i"), "Sec" => ամսաթիվ ("s")); echo json_encode ($n); ?>Ֆունկցիայի ֆայլի առաջին տողում վերնագիր ()մենք սահմանում ենք JSON գրառումի ելքային ձևաչափը, նշում ենք, որ փաստաթուղթը JavaScript է UTF-8 կոդավորմամբ:
Երկրորդ տողում դաշտերով ձևավորում ենք ասոցիատիվ զանգված MinԵվ վրկ, որում գրում ենք ընթացիկ արժեքներըրոպեներ և վայրկյաններ:
Երրորդ տողում ստեղծված զանգվածից ձևավորում ենք JSON գրառում։
Ուշադրություն. json_encode() ֆունկցիան կաշխատի միայն PHP 5.2 և ավելի բարձր տարբերակում: