PDA

View Full Version : دریافت اطلاعات آرایه دو بعدی



mehdi4467
یک شنبه 08 فروردین 1395, 12:31 عصر
سلام
من یک آرایه دو بعدی دارم و می خواهم یک مقدار آن را در یک متغیر بریزم.
آرایه به شکل زیر است که در متغیر mg قرار گرفته:

Array
(
[0] => Array
(
[id] => 2
[name] => Mehdi
[parentgroup] => 1
[gimage] => mehdi
[comment] =>
)

[1] => Array
(
[id] => 3
[name] => Ali
[parentgroup] => 1
[gimage] => ali
[comment] =>
)
)

حالا من می خواهم یک مقدار آن را بدست بیاورم این کد رو نوشتم:


<script>
name = mg[1]['name']
</script>



ولی این کد ایراد دارد و کار نمی کند.

blue.web9
یک شنبه 08 فروردین 1395, 18:01 عصر
var name = mg[1]['name'];

mehdi4467
دوشنبه 09 فروردین 1395, 07:53 صبح
سلام
ممنون از جوابتون ولی به این شکل هم جواب نداد.
در واقع من عبارت زیر رو از طریق دستور print_r($data) که در انتهای یک فایل php است به فایل ajax.js می فرستم. ظاهرا آن طور که متوجه شدم با اینکار در واقع من دارم یک رشته رو می فرستم و نه خود آرایه.
لطفا زاهنمایی کنید که این حرف من درست است یا خیر و راه حل ارسال آرایه از فایل php به قایل ajax.js (فایلی است که خودم درست کردم و کد های جاوا اسکریپت را در داخل آن می نویسم) چیست؟

ممنون

blue.web9
دوشنبه 09 فروردین 1395, 15:40 عصر
لطفا کد php و ajax خودتون بزارید.
در حالت کلی باید آرایه را با تابع json_encode در php به json تبدبل کنید و در جاواسکریپت با تابع JSON.parse دوباره json رو به آرایه جاواسکرپیت تبدیل کنید تا به مقادیر آرایه به راحتی دسترسی داشته باشید.

mehdi4467
دوشنبه 09 فروردین 1395, 19:52 عصر
سلام
کد PHP:(فایل jchangegroup.php)
در فایل زیر متغیر $subGroup شامل همان آرایه ای است که در بالا نوشتم.
البته با echo که در زیر نوشتم کلا خطا می دهد که امکان تبدیل آرایه به رشته نیست.
با print_r هم که بر می گردونم همانی می شود که در بالا گفته شد.


$id = $_GET["param"];
$subGroup = Group::GetSubGroupById($id);
echo $subGroup;

فایل ajax.php


function changeMainGroup(id)
{

var code = id;
http.open("GET", "jchangegroup.php?param=" + code, true);
http.onreadystatechange = AnswerOfChangeMainGroup;
http.send(null);
}

function AnswerOfChangeMainGroup()
{
if (http.readyState == 4)
{
r = http.responseText;
if (r != -1)
{
adsChangeMainGroup(r);
}
else
{
alert("خطا در ارتباط با سرور");
}
}
}

تابع adsChangeMainGroup



function adsChangeMainGroup(mg)
{
var gr = mg;
with (document.getElementById('sgroup'))
{
options.length = 0;
for (i = 0; i < gr.length; i++)
{
k = i + 1;
options[k] = new Option(gr[i]['id'], gr[i]['name']);
}

}
document.getElementById('sgroup').disabled = false;
}

SCoder
دوشنبه 09 فروردین 1395, 22:43 عصر
دوست عزیز اینو امتحان کن جواب میده :




<?php
$ar = [

[
"id" => 2,
"name" => "Mehdi",
"parentgroup" => 1,
"gimage" => "mehdi",
"comment" => "dfdsf"
],

[
"id" => 3,
"name" => "Ali",
"parentgroup" => 1,
"gimage" => "ali",
"comment" => "ftyft"
]
];


?>
<html><head></head><body>


<script>
var jar = <?php echo json_encode($ar); ?>;
alert(jar[0]['name']);
</script>


</body></html>

mehdi4467
سه شنبه 10 فروردین 1395, 07:24 صبح
سلام برنامه شما جواب داد.
ولی برنامه من به این شکل است که فایل Php جداست و باید آرایه را بایک دستوری به فایل ajax برگردانم. الان که این کار رو کردم بازهم همان مشکل قبلی بود.

SCoder
سه شنبه 10 فروردین 1395, 13:14 عصر
این فایل php :




#awesome.php


<?php


$ar = [





[


"id" => 2,


"name" => "Mehdi",


"parentgroup" => 1,


"gimage" => "mehdi",


"comment" => "dfdsf"


],





[


"id" => 3,


"name" => "Ali",


"parentgroup" => 1,


"gimage" => "ali",


"comment" => "ftyft"


]


];






echo json_encode($ar);


?>





و این فایل html :




<!-- awesome.html -->
<html><head></head><body>


<p> this is some txt </p>


<input type='button' id='btn' value = 'clickHere' />


<script>
btn.addEventListener('click',function(e){
var res;
var xhr = new XMLHttpRequest();
xhr.open('GET','awesome.php',true);
xhr.onreadystatechange = recieveIt;
xhr.send(null);
function recieveIt(){
if(xhr.readyState === 4){
res = JSON.parse(xhr.responseText);
alert(res[0]['name']);
}
}
});








</script>










</body></html>