[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JSONP - PHP + JS
Okulo
всем привет.
хотелось все таки еще раз поднять тему JSON.
Информации в принципе не так много, а примеров рабочих найти вообще сложно.

даже не вопрос, а скорее просьба - может кто нибудь дать пример как РНР формирует JSON ответ из БД MySQL например.
и как этот же ответ обрабатывать с помощью JS.

все что находил как то не то..
подойдут любые рабочие примеры, дальше постараюсь допереть :0)
Игорь_Vasinsky
Цитата
Информации в принципе не так много


да ну.. вы на сайте газеты "Комсомольская правда" ищете?


Цитата
дать пример как РНР формирует JSON ответ из БД MySQL например


для работы с json - 2 функции json_encode() и json_decode()

На примере массива покажу (так же и БД возращает ассоц массив)

$arr = array('a'=>'A', 'b'=>'B', 'c'=>'C');

$json_arr = json_encode($arr);

echo 'Строка json: '.$json_arr.'<br/>';

echo 'Обратно массив '.var_dump(json_decode($json_arr, true)).'<br />';
echo 'Обратно объект '.var_dump(json_decode($json_arr)).'<br />';



Строка json: {"a":"A","b":"B","c":"C"}

array
'a' => string 'A' (length=1)
'b' => string 'B' (length=1)
'c' => string 'C' (length=1)
Обратно массив

object(stdClass)[2]
public 'a' => string 'A' (length=1)
public 'b' => string 'B' (length=1)
public 'c' => string 'C' (length=1)
Обратно объект



А по JavaScript http://learn.javascript.ru/json



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Michael
Вот весь принцип:

xxx.php
print json_encode(array('red','green','yellow'));

на клиенте (используя jquery).
$.getJSON('xxx.php', function(data) {
alert(data.join('-'));
});




_____________
There never was a struggle in the soul of a good man that was not hard
Okulo
спасибо за примеры.

теперь я делаю так :
$query ='SELECT * from `test`';
$sql = @mysql_query($query);
while( $row = mysql_fetch_array($sql) )
{
$rows[] = array(
"name" => $row["name"],
"text" => $row["text"]
);

}
echo json_encode($rows);


получаю данные вида:
[{"name":"f","text":"fdgsfdgds"},{"name":"dafsfsdfsd","text":"dsfsdfdsfs"},{"name":"f","text":"fdf"},{"name":"fsdfs","text":"fdf"}]


это работает файл test.php на удаленном сервере например.
теперь, мне надо с него получить на моем клиенте JS посредством JSONP конечно.

а вот тут у меня возникают сложности...
kaww
JSONP - это не PHP + JS,
JSONP - это кроссдоменный json, то что здесь обсуждается - это обычный json
Цитата (Okulo @ 26.03.2013 - 03:43)
теперь, мне надо с него получить на моем клиенте JS посредством JSONP конечно.

а вот тут у меня возникают сложности...


если используется jQuery для ajax запросов, то логичнее использловаь предоставляемые ею инструменты, как то

$.ajax({
url: "some_script.php",
dataType: "json"
success: function(data){console.log(data);//data - json объект}
})

или, как уже сказал Michael, :
$.getJSON()
Okulo
вот я как раз и хотел обсудить именно JSONP )

так как ajax или json не работаете с удаленным доменом, поэтому я и написал - "это работает файл test.php на удаленном сервере например."

kaww
Okulo
. Как работает думаю объяснять не нужно, все понятно из примера. Например,
Определяем наш обработчик:
function parseResponse(json) {

//тут код, который преобразует json-строку в объект, и что-то с ним делает
}

Чтобы сделать запрос, вставляем в dom скрипт
<script type="text/javascript" src="http://host.ru/jsonp.php?func=parseResponse"></script>

,браузер делает запрос по http://host.ru/jsonp.php?func=parseResponse
jsonp.php:

$func = $_GET['func'];

echo $func . '("'. json_encode(array('test'=>'test value')) .'")';
IncSW
Цитата (Okulo @ 26.03.2013 - 09:51)
так как ajax или json не работаете с удаленным доменом

Как не работает? =)
А хедеры ставить нормальные не пробовали? =)
Access-Control-Allow-Origin
Okulo
Цитата (IncSW @ 26.03.2013 - 07:30)
Цитата (Okulo @ 26.03.2013 - 09:51)
так как ajax или json не работаете с удаленным доменом

Как не работает? =)
А хедеры ставить нормальные не пробовали? =)
Access-Control-Allow-Origin

про хедеры не знал
но похоже проблема в этом. как только закинул файл на хостинг, получил - is not allowed by Access-Control-Allow-Origin

щас буду пробовать
Denhell
Всем добрый вечер.
Есть массив
$arr = array("filter_1"=>"5", "filter_2"=>"2");
Преобразую в json:
$json = json_encode($arr);
Получаю строку такого вида:
[{"filter_1":"5"},{"filter_2":"2"}]
Делаю обратно:
$arr = json_decode($json, true);
Выходной массив выглядит не так как начальный:
Array
(
[0] => Array
(
[filter_1] => 5
)

[1] => Array
(
[filter_2] => 2
)
)
Почему он превратился в многомерный? Версия php - 5.2.12, может поэтому?
Invis1ble
Denhell
Цитата
Есть массив
$arr = array("filter_1"=>"5", "filter_2"=>"2");
Преобразую в json:
$json = json_encode($arr);
Получаю строку такого вида:
[{"filter_1":"5"},{"filter_2":"2"}]

ты не мог получить такую строку из этого массива, перепроверь

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.