AJAX - скрипт, връщащ масив.

sizif

Registered
Здравейте!

Нуждая се от прост AJAX - скрипт, който изпраща данните по ПОСТ-метод и може да получава от сървъра отговор под формата на масив.

Някой попадал ли е на подобен?

Нуждая се от възможно най-простия AJAX, за да мога да го нагодя към нуждите си. Не ми е нужна цяла система.

Благодаря предварително!
 
Здарвей, FestarBG! :)

Ще го погледна довечера, че сега спя, но доколкото виждам на първо четене това изпраща масив, а не го получава.
 
AJAX, който изпраща стойност до сървъра и приема отговора. Искам отговора на сървъра да е масив, който AJAX-а да отчете като масив.

Дали ще изпраща пост или гет е второстепенно. Важно е стойността, който приема AJAX-а от сървъра да е под формата на масив.

Ако ще е изпраща низова стойност и получава низова стойност - такъв AJAX вече съм си нагодил, но не ми е много полезен. Трябва ми отговор от сървъра под формата на масив, който да обработя при клиента.
 
Е добре, не ползваш ли AJAX да пратиш определ низ, и да визуализираш само резултата от обработката.Какъв е смисъла да пратиш заявката и да ти прати масив.Пращаш заявка, обработва се и извежда резултата.
 
Имам да попълня н-брой самостоятелни стойности по страницата и трябва да го направя с една заявка към сървъра. Операцията се изпълнява 650 пъти на час. Масива е най-удобен.
 
Еми според това което каза мисля че Festar ти е отговорил с правилния код... :idea:
 
Грешката е моя. Стори ми се, че праща масив, а връща низ. Ще пиша довечера.
Благодаря, че проследихте темата!
 
Правилно съм видял първия път. AJAX-ът от линка на FestarBG праща масив и получава масив, НО разпечатан от сървъра като низова стойност :(

Код:
post.php

<?
print_r($_POST);
?>

просто принтира масива:

Код:
Array ( [mytextarea1] => my test 1 2 3 [mytextarea2] => my test2 4 5 6 )

което пак си е низова стойност, ако и да създава илюзията за масив.

Възможно ли е изобщо с AJAX да получа от сървъра стойност под формата на масив?
 
sizif каза:
Правилно съм видял първия път. AJAX-ът от линка на FestarBG праща масив и получава масив, НО разпечатан от сървъра като низова стойност :(

Код:
post.php

<?
print_r($_POST);
?>

просто принтира масива:

Код:
Array ( [mytextarea1] => my test 1 2 3 [mytextarea2] => my test2 4 5 6 )

което пак си е низова стойност, ако и да създава илюзията за масив.

Възможно ли е изобщо с AJAX да получа от сървъра стойност под формата на масив?

XML :?:
 
Ти получаваш стойностите,записани в масива POST.Няма как да изкараш масив!Тоест,за да се изведе нещо на страницата,то трябва да е низ.Кажи за какво ти трябва точно,дай линк ако трябва.Ти си имаш масива POST.Обработвай го.

:)
 
FestarBG,

от сървъра трябва да върна няколко стойности (и да ги обработя при клиента). Затова се нуждая от масив.

AJAX до сървъра -> низ
сървър до AJAX-а -> масив

Такъв процес ми трябва :)


StormBreaker:


Ок, но как трябва да изглежда резултата от сървъра и как да го обработя с Js-та?
 
sizif каза:
StormBreaker:


Ок, но как трябва да изглежда резултата от сървъра и как да го обработя с Js-та?

Не съм запознат с javascript, но сървъра трябва да праща данни подобни на

<results>
<item>kdfjghsdfg</item>
<item>djnfhdjfhd</item>
<item>sdlfkjsd fsd dsf</item>
</results>

В javascript би трябвало да е нещо такова

var masiv = http_request.responseXML.getElementsByTagName("item");

В случая масива трябва да е в masiv
 
Благодаря, StormBreaker,
ще пробвам, дано се получи. :?:
 
sizif, това с xml файла мисля,че ще е доста бавна процедура, а именно това се мъчиш да избегнеш.ЗА това ти писахме да кажеш какво точно искаш, да знаем как да ти помогнем.Имам една идея, която не знам дали ще ти допадне, и изобщо дали ще ти върши работа.След като си изпратил заявка ,тя ще се обработи, и дори да ти върне низ, какво ти пречи да ползваш функцията split,за да си "раздробиш" низа на елементи от масив, както ти искаш.Да речем прщаш заявка, резултата е масив.ПОлзваш примерно implode.Пример:
$masiv = array("edno", "dwe", "tri", "cheteri");
$string = implode("|", $masiv);
след това тя се обработва и резултата се връща като низ, със разделител | между самите елементи.
edno|dwe|tri|cheteri
Остава после само чрез функцията split() на JavaScript, да разделиш низа на масив.
 
Значи когато вадиш правиш така

Код:
result = xmlHttp.responseText;
var array = result.split(",");
//правиш примерно един цикъл и вадиш
document.write(result[i]+"\n");

това трябва да ти е на изхода ако има нещо дай си кода и да го оправим
 
emagi каза:
sizif, това с xml файла мисля,че ще е доста бавна процедура, а именно това се мъчиш да избегнеш.ЗА това ти писахме да кажеш какво точно искаш, да знаем как да ти помогнем.Имам една идея, която не знам дали ще ти допадне, и изобщо дали ще ти върши работа.След като си изпратил заявка ,тя ще се обработи, и дори да ти върне низ, какво ти пречи да ползваш функцията split,за да си "раздробиш" низа на елементи от масив, както ти искаш.Да речем прщаш заявка, резултата е масив.ПОлзваш примерно implode.Пример:
$masiv = array("edno", "dwe", "tri", "cheteri");
$string = implode("|", $masiv);
след това тя се обработва и резултата се връща като низ, със разделител | между самите елементи.
edno|dwe|tri|cheteri
Остава после само чрез функцията split() на JavaScript, да разделиш низа на масив.

Офф. Хора, четете бе. Не съм писъл, че ще му трябва отделен XML файл. Просто самия php файл ще връща XML (което е и реалното нещо, за което е направен AJAX - asynchronous JavaScript and XML ). Въобще няма да е бавно, даже ще е по-добре така да се направи. А като го обработваш и ги разделяш с | какво ще стане, като имаш някоя стойност с "|" в нея? Хоп - 2 стойности... :)
 
StormBreaker каза:
. А като го обработваш и ги разделяш с | какво ще стане, като имаш някоя стойност с "|" в нея? Хоп - 2 стойности... :)
А той какво иска?!?!Масив!Тези две стойности, се присвояват като елементи на масив.Нали през цялото това време това се иска
 
emagi каза:
StormBreaker каза:
. А като го обработваш и ги разделяш с | какво ще стане, като имаш някоя стойност с "|" в нея? Хоп - 2 стойности... :)
А той какво иска?!?!Масив!Тези две стойности, се присвояват като елементи на масив.Нали през цялото това време това се иска

Не това. Имах в предвид това:
$masiv[0] = 'asdfsdf';
$masiv[1] = 'sdfs|dsdf';
asdfsdf|sdfs|dsdf

Като го парсне с javascript ще станат 3 елемента в масива. Вместо да са 2
masiv[0] = 'asdfsdf';
masiv[1] = 'sdfs';
masiv[2] = 'dsdf';
 

Back
Горе