<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AJAX Planet &#187; json</title>
	<atom:link href="http://www.ajaxplanet.ru/tag/json/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajaxplanet.ru</link>
	<description></description>
	<lastBuildDate>Thu, 13 Oct 2011 13:00:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Секрет SearchMash.com</title>
		<link>http://www.ajaxplanet.ru/sekret-searchmashcom/</link>
		<comments>http://www.ajaxplanet.ru/sekret-searchmashcom/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 05:27:17 +0000</pubDate>
		<dc:creator>TermiT</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[SearchMash.com]]></category>

		<guid isPermaLink="false">http://www.ajaxplanet.ru/sekret-searchmashcom/</guid>
		<description><![CDATA[Все знают что Google предоставляет API для получения результатов поиска. Но на сайте SearchMash.com существует неофициальное API для получения результатов в формате JSON (неофициальное потому что гугл о нем не заявлял) Итак чтобы воспользоваться API нужно перейти по урлу http://www.searchmash.com/results/[query], где [query] нужно заменить на интересующий вас запрос. Если задать урл в следующем формате http://www.searchmash.com/results/[query]?i=11&#38;n=10, [...]]]></description>
			<content:encoded><![CDATA[<p>Все знают что Google предоставляет <noindex><a href="http://code.google.com/apis/ajaxsearch/">API</a></noindex> для получения результатов поиска. Но на сайте <noindex><a href="http://www.searchmash.com/">SearchMash.com</a></noindex> существует неофициальное API для получения результатов в формате JSON (неофициальное потому что гугл о нем не заявлял)</p>
<p>Итак чтобы воспользоваться API нужно перейти по урлу <strong>http://www.searchmash.com/results/[query]</strong>, где [query] нужно заменить на интересующий вас запрос. Если задать урл в следующем формате http://<strong>www.searchmash.com/results/[query]?i=11&amp;n=10</strong>, то вы получите десять результатов запроса начиная с одиннадцатого. Также можно получить результаты по изображениям, видео и блогам:</p>
<p><strong>http://www.searchmash.com/results/images:[query]<br />
http://www.searchmash.com/results/blogs:[query]</p>
<p>http://www.searchmash.com/results/video:[query]</strong></p>
<p>Если вы захотите использовать это API через AJAX, то возможно вам потребуется <noindex><a href="http://developer.yahoo.net/javascript/howto-proxy.html">веб-прокси</a></noindex> для создания междоменых запросов.</p>
<p>В PHP можно получить результаты, воспользовавшись библиотекой <noindex><a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=198">pear.php.net/pepr/pepr-proposal-show.php?id=198</a></noindex>:</p>
<p><code><br />
$request = 'статьи о AJAX'<br />
require_once("JSON.php");<br />
$json = new Services_JSON();<br />
$full_json_return = $json-&gt;decode(implode('',file('http://www.searchmash.com/results/'.urlencode(iconv('cp1251','UTF-8',$request)).'?n=10')));<br />
print_r($full_json_return-&gt;result);<br />
</code></p>
	<p></p>
	<hr noshade style="margin:0;height:1px" />
	<p>&copy; <a href="http://www.ajaxplanet.ru">AJAX Planet</a>, 2007. |
	  <a href="http://www.ajaxplanet.ru/sekret-searchmashcom/">Постоянная ссылка</a> |
	  <a href="http://www.ajaxplanet.ru/sekret-searchmashcom/#comments">Комментарии</a></p>
	
	<p>Интересна эта тема? Посмотрите архив сообщений по теме <a href="http://www.ajaxplanet.ru/category/uncategorized/" title="Просмотреть все записи в рубрике &laquo;Без рубрики&raquo;" rel="category tag">Без рубрики</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ajaxplanet.ru/sekret-searchmashcom/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Web Toolkit. Небольшое руководство</title>
		<link>http://www.ajaxplanet.ru/google-web-toolkit-manual/</link>
		<comments>http://www.ajaxplanet.ru/google-web-toolkit-manual/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 05:35:17 +0000</pubDate>
		<dc:creator>TermiT</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Технологии]]></category>
		<category><![CDATA[Библиотеки и фреймворки]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JAXA]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://www.ajaxplanet.ru/google-web-toolkit-manual/</guid>
		<description><![CDATA[0. О статье. Это перевод статьи Джоана Хуртадо (Juan Hurtado) &#8220;GWT Small Guide&#8221;. Оригинал доступен на испанском и английском. Возможно перевод получится грубым, так как я очень торопился, буду рад узнать ваше мнение насчет качества перевода. Потапов Геннадий (TermiT) 1. Введение. 1.1. Презентация Я написал это небольшое руководство для людей, которые хотят научится создавать динамические [...]]]></description>
			<content:encoded><![CDATA[<p><strong>0.  О статье.</strong></p>
<blockquote><p>Это перевод статьи <noindex><a href="http://angel.hurtado.googlepages.com/">Джоана Хуртадо (Juan Hurtado)</a></noindex> &#8220;GWT Small Guide&#8221;. Оригинал доступен на <noindex><a href="http://angel.hurtado.googlepages.com/tutorialgwt">испанском</a></noindex> и <noindex><a href="http://angel.hurtado.googlepages.com/tutorialgwt2">английском</a></noindex>. Возможно перевод получится грубым, так как я очень торопился, буду рад узнать ваше мнение насчет качества перевода.</p>
</blockquote>
<p style="text-align: right;"><noindex><a href="http://toodoo.ru/user/4530/profile">Потапов Геннадий (TermiT)</a></noindex></p>
<div>
<p><strong>1. Введение.</strong></p>
<p><strong>1.1. Презентация</strong><br />
Я написал это небольшое руководство для людей, которые хотят научится создавать динамические приложения пользуясь <noindex><a href="http://code.google.com/webtoolkit/">GWT</a></noindex> (Google Web Toolkit) в AMP (Apache MySQL PHP)  среде. Основная идея в том, чтобы написать небольшой и очень простое приложение с использованием <noindex><a href="http://www.php.net/">PHP</a></noindex> и <noindex><a href="http://www.mysql.com/">MySQL</a></noindex> на стороне сервера, GWT для реализации интерфейса, <noindex><a href="http://www.json.org/">JSON</a></noindex> для обмена данными между клиентской и северной частями.</p>
<p><strong>1.2. О JSON</strong><br />
JSON (JavaScript Object Notation) &#8211; это легкий и удобный формат обмена данными. Отличительной чертой является то, что он прост и понятен для человека. Этот формат легко обрабатывается и генерируется программами. Он основан на языке <noindex><a href="http://www.crockford.com/javascript" title="JavaScript">JavaScript</a></noindex>, <noindex><a href="http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf" title="ECMA-262" rel="nofollow">Standard ECMA-262 3rd Edition — December 1999</a></noindex>. JSON — это текстовый формат, не зависящий от языка программирования. JSON использует соглашения близкие к Си-подобным языкам, включая C, C++, C#, Java, JavaScript, Perl, Python, и много других. Все это делает JSON идеальным языком для обмена данными. Вы можете найти много полезной информации о JSON здесь <noindex><a href="http://www.json.org/" title="JSON">www.json.org</a></noindex> (и тут: <noindex><a href="http://ru.wikipedia.org/wiki/JSON">ru.wikipedia.org/wiki/JSON</a></noindex>)</p>
<p><strong>1.3. О GWT</strong><br />
GWT (Google Web Toolkit) &#8211; это инструмент позволяющий легко создавать AJAX (<noindex><a href="http://ru.wikipedia.org/wiki/AJAX">ru.wikipedia.org/wiki/AJAX</a></noindex>) приложения на языке JAVA, проще говоря, GWT &#8220;переводит&#8221; ваш JAVA код в HTML и JavaScript. Подробнее о GWT  можно прочесть по адресу <noindex><a href="http://code.google.com/webtoolkit/">http://code.google.com/webtoolkit/</a></noindex></p>
<p><strong>1.4. Об этом руководстве</strong><br />
Мы сделаем небольшое приложение для поиска информации по сотрудникам в базе данных MySQL, используя в качестве параметра поиска имя сотрудника.</p>
<p><strong>2. Работа над серверной частью.</strong></p>
<p><strong>2.1. База данных</strong><br />
Нам нужна всего одна таблица, которая будет называться &#8216;directory&#8217;, и которую мы заполним информацией о сотрудниках:</p>
<p><noindex><a href="http://angel.hurtado.googlepages.com/database.png/database-full.jpg"><img src="http://angel.hurtado.googlepages.com/database.png/database-full.jpg" src="http://angel.hurtado.googlepages.com/database.png/database-full.jpg" alt="" width=470 border="0" /></a></noindex><br />
<strong>2.2. PHP скрипт</strong><br />
Для доступа к данным базы напишем PHP скрипт. Он будет выбирать данные и преобразовывать в JSON формат. Для этого будем использовать JSON PHP class, который можно скачать отсюда <noindex><a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=198">http://pear.php.net/pepr/pepr-proposal-show.php?id=198</a></noindex>. Этот класс позволяет преобразовывать значения из PHP в JSON формат и отправлять их браузеру. Файл &#8216;index.php&#8217; будет содержать следующий код:</p>
<p><code lang="php"><br />
< ?</p>
<p>// вызов JSON.php<br />
require_once(”JSON.php”);</p>
<p>// коннект к базе</p>
<p>$conector = mysql_connect(’localhost’, ‘root’, ‘juan’) or die(mysql_error());<br />
mysql_select_db(’JSONPHP’) or die(mysql_error());</p>
<p>//формируем запрос</p>
<p>$sqlQuery = “SELECT * FROM directory WHERE name LIKE ‘”. $_REQUEST[’tosearch’]. “%’”;<br />
$dataReturned = mysql_query($sqlQuery) or die(mysql_error());<br />
$i = 0;</p>
<p>while($row = mysql_fetch_array($dataReturned)){</p>
<p>// заполняем массив $value данными.</p>
<p>$value{”item”}{$i}{”Employe Number”}= $row[’enumber’];<br />
$value{”item”}{$i}{”Name”}= $row[’name’];<br />
$value{”item”}{$i}{”Position”}= $row[’position’];<br />
$value{”item”}{$i}{”Phone Number”}= $row[’phnumber’];<br />
$value{”item”}{$i}{”Location”}= $row[’location’];<br />
$i++;<br />
}</p>
<p>// использую JSON.php конвертируем данные в JSON формат и отправляем в браузер</p>
<p>$json = new Services_JSON();<br />
$output = $json->encode($value);<br />
print($output);<br />
?>
</p>
<p></code></p>
<p>И это весь код. Вывод этого php скрипта должен быть похож на следующие:<code>{"item":[{<br />
"Employe Number":"110009",<br />
"Name":"Juan Hurtado",<br />
"Position":"System Analist",<br />
"Phone Number":"81001121",<br />
"Location":"Monterrey City"}]<br />
} </code>Теперь пора заняться интерфейсом и GWT.</p>
<p><strong>3. Работа над клиентской частью.</strong></p>
<p><strong>3.1 Пример с JSON RPC</strong><br />
На сайте http://code.google.com/webtoolkit/ есть несколько примеров использования GWT. Один из них показывает, как использовать GWT  в связке с JSON для доступа к сервису <noindex><a href="http://www.yahoo.com/">Yahoo</a></noindex>.  Мы возьмем за основу нашего интерфейса пример JSON RPC, который можно скачать <noindex><a href="http://code.google.com/webtoolkit/documentation/examples/jsonrpc/">тут</a></noindex>.</p>
<p><strong>3.2 Создание нового приложения</strong><br />
Используя  projectCreator.cmd (этот файл находится в дистрибутиве GWT) создадим новый проект:<br />
<code>C:\&gt;projectCreator.cmd -eclipse PHPJSON -out PHPJSON<br />
Created directory PHPJSON\src<br />
Created file PHPJSON\.project<br />
Created file PHPJSON\.classpath</code><br />
Теперь создадим новый проект для eclipse с помощью <noindex><a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.CommandLineTools.applicationCreator.html">applicationCreator.cmd</a></noindex>:<br />
C:\&gt;applicationCreator.cmd -eclipse PHPJSON -out PHPJSON com.juan.client.PHPJSON</p>
<p>Created directory PHPJSON\src\com\juan<br />
Created directory PHPJSON\src\com\juan\client<br />
Created directory PHPJSON\src\com\juan\public<br />
Created file PHPJSON\src\com\juan\PHPJSON.gwt.xml<br />
Created file PHPJSON\src\com\juan\public\PHPJSON.html<br />
Created file PHPJSON\src\com\juan\client\PHPJSON.java<br />
Created file PHPJSON\PHPJSON.launch<br />
Created file PHPJSON\PHPJSON-shell.cmd<br />
Created file PHPJSON\PHPJSON-compile.cmd</p>
<p>Пример JSON RPC содержит классы, которые позволяют обрабатывать иформацию в формате JSON. (Тут говорится о старой версии примера JSON RPC; в новой версии примера JSON RPC эти файлы не идут в дистрибутиве примера, так как эти классы стали стандартными в новой версии GWT. Но никто не мешает вам следовать примеру, все это будет работать и с новой версией GWT)  Скопируем из примера следующие файлы в папку PHPJSON\src\com\juan\client:</p>
<ul>
<li>JSONArray.java
</li>
<li>JSONBoolean.java
</li>
<li>JSONException.java
</li>
<li>JSONNumber.java
</li>
<li>JSONObject.java
</li>
<li>JSONParser.java
</li>
<li>JSONString.java
</li>
<li>JSONValue.java</li>
</ul>
<p>Во всех файлах нужно заменить строчку с данными о пути пакета. (в нашем случае нужно заменить package com.google.gwt.sample.json.client; на package com.juan.client;) Также исправьте пути в файле JSONParser.java. Затем импортируем наш проект в Eclipse как написано в <noindex><a href="http://code.google.com/webtoolkit/gettingstarted.html#NewEclipse">документации по GWT</a></noindex>. Запустите Eclipse и кликните в меню File -&gt; Import. В появившемся окне выберите пункт &#8216;Existing Projects into Workspace&#8217;, укажите путь к файлу .project в следующем окне. После этого вы должны увидеть ваш GWT проект:</p>
<p><noindex><a href="http://photos1.blogger.com/blogger2/2623/301412589031540/1600/eclipse.jpg"><img src="http://photos1.blogger.com/blogger2/2623/301412589031540/400/eclipse.jpg" src="http://photos1.blogger.com/blogger2/2623/301412589031540/400/eclipse.jpg" alt="" border="0" /></a></noindex><br />
Создадим класс JSONRequester и опишем следующие метод:</p>
<p><code lang="JavaScript"><br />
public Widget initializeMainForm() {<br />
/*<br />
* Иницилизация и установка панели, которая будет содержать<br />
* поисковую форму и вывод результата<br />
*/</code></p>
<p>FocusPanel fpn = new FocusPanel();<br />
Grid gd = new Grid(1,2);</p>
<p>b1.setText(”Search”);<br />
b1.addClickListener(new SearchButtonClickListener());</p>
<p>gd.setWidget(0, 0, txtBox);<br />
gd.setWidget(0, 1, b1);</p>
<p>gdOut.setWidget(0,0,gd);</p>
<p>gdOut.setBorderWidth(1);<br />
gdOut.setWidth(”500px”);</p>
<p>childGrid.setCellPadding(0);<br />
childGrid.setCellSpacing(0);<br />
childGrid.setWidth(”490px”);</p>
<p>fpn.add(gdOut);</p>
<p>return fpn;<br />
}</p>
<p>Как вы видете создается элемент <noindex><a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.ui.FocusPanel.html">FocusPanel</a></noindex>, затем мы прикрепляем эелемент <noindex><a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.ui.Grid.html">Grid</a></noindex>(Сетка), на этой сетке располагаем все нужные элементы. В обработчике клика по кнопке создается класс SearchButtonClickListener, которые будет содержать следующие строки:</p>
<p><code lang="JavaScript"><br />
private class SearchButtonClickListener implements ClickListener {</code></p>
<p>public void onClick(Widget sender) {<br />
/*<br />
* Когда пользователь нажимает кнопку мы получаем URL.<br />
*/<br />
itemNumber = 0;<br />
doFetchURL();<br />
}</p>
<p>private void doFetchURL() {<br />
/*<br />
* Получаем URL и вызываем обработчик<br />
*/<br />
b1.setText(”Searching …”);<br />
if (!HTTPRequest.asyncGet(DEFAULT_SEARCH_URL + “?tosearch=” + txtBox.getText(),</p>
<p>new JSONResponseTextHandler())) {</p>
<p>b1.setText(”Search”);<br />
}<br />
}<br />
}</p>
<p>Этот класс содержит метод doFetchURL(), с помощью которого находится URL и вызывается класс JSONResponseTextHandler() для выполнения операций над JSON документом:</p>
<p><code lang="JavaScript"><br />
private class JSONResponseTextHandler implements ResponseTextHandler {</code></p>
<p>public void onCompletion(String responseText) {<br />
/*<br />
* После того, как полученны данные в формате JSON мы<br />
* обрабатываем их и выводим результат<br />
*/ </p>
<p>JSONObject jsonObject;<br />
try {<br />
jsonObject = JSONParser.parse(responseText);<br />
displayJSONObject(jsonObject);</p>
<p>} catch (JSONException e) {</p>
<p>}</p>
<p>b1.setText(”Search”);</p>
<p>}</p>
<p>private void displayJSONObject(JSONObject jsonObject) {<br />
/*<br />
* Очищаем Grid(сетку) и заполняем новыми результатами<br />
*/</p>
<p>childGrid.clear();<br />
requestChildrenGrid(jsonObject);<br />
gdOut.setWidget(1,0,childGrid);</p>
<p>}</p>
<p>private void requestChildrenGrid(JSONValue jsonValue){<br />
/*<br />
* Заполнение Grid(сетки)<br />
*/</p>
<p>JSONObject jsonObject;<br />
if(jsonValue.isArray() != null){<br />
for(int i = 0; i < jsonValue.isArray().size();i++){<br />
requestChildrenGrid(jsonValue.isArray().get(i));<br />
childGrid.setWidget(itemNumber,0,new HTML(”<br />
<hr />”));<br />
childGrid.setWidget(itemNumber,1,new HTML(”<br />
<hr />”)); </p>
<p>itemNumber++;<br />
int resizeNumber = itemNumber + 1;<br />
childGrid.resize(resizeNumber,2);<br />
}<br />
} else {</p>
<p>if ((jsonObject = jsonValue.isObject()) != null) {<br />
String[] keys = jsonObject.getKeys();</p>
<p>for (int i = 0; i < keys.length; ++i) {<br />
String key = keys[i];<br />
childGrid.setWidget(itemNumber,0,new HTML(”<b>”+ key +”:”));<br />
childGrid.setWidget(itemNumber,1,new HTML(jsonObject.get(key).toString()));<br />
requestChildrenGrid(jsonObject.get(key));</b></p>
<p>itemNumber++;<br />
int resizeNumber = itemNumber + 1;<br />
childGrid.resize(resizeNumber,2);<br />
}<br />
} else if (jsonValue != null) {<br />
//</p>
<p>} else {<br />
//<br />
}</p>
<p>}<br />
}</p>
<p>} </p>
</p>
<p>Все эти методы из файла JSON.java гугловкого примера <noindex><a href="http://code.google.com/webtoolkit/documentation/examples/jsonrpc/">JSON RPC</a></noindex>.  Метод requestChildrenGrid(JSONValue jsonValue) разбивает JSON документ на ключи и значения, ключи обрамляются тэгами &#8220;&lt;B&gt;&#8221;и прикрепляются к Grid(сетке), которая в свою очередь прикрепляется к FocusPanel. И наконец, в файле PHPJSON.java мы выводим результат на главную панель:</p>
<p><code lang="JavaScript">public void onModuleLoad() {<br />
/*<br />
* Для красоты используем TabPanel<br />
*/<br />
TabPanel tp = new TabPanel();<br />
JSONRequester myJson = new JSONRequester();</code></p>
<p>tp.add(myJson.initializeMainForm() ,”Corporate Directory”);</p>
<p>tp.selectTab(0);</p>
<p>RootPanel.get().add(tp);<br />
}</p>
<p>Вот как должно выглядеть приложение в результате:</p>
<p><noindex><a href="http://photos1.blogger.com/blogger2/2623/301412589031540/1600/web.jpg"><img src="http://photos1.blogger.com/blogger2/2623/301412589031540/400/web.jpg" src="http://photos1.blogger.com/blogger2/2623/301412589031540/400/web.jpg" alt="" border="0" /></a></noindex><br />
Вы можете скачать код клиентской и серверной части <noindex><a href="http://angel.hurtado.googlepages.com/proyecto.tgz">отсюда</a></noindex>. Надеюсь, это небольшой пример вам помог.
</p>
</div>
	<p></p>
	<hr noshade style="margin:0;height:1px" />
	<p>&copy; <a href="http://www.ajaxplanet.ru">AJAX Planet</a>, 2007. |
	  <a href="http://www.ajaxplanet.ru/google-web-toolkit-manual/">Постоянная ссылка</a> |
	  <a href="http://www.ajaxplanet.ru/google-web-toolkit-manual/#comments">Комментарии</a></p>
	
	<p>Интересна эта тема? Посмотрите архив сообщений по теме <a href="http://www.ajaxplanet.ru/category/ajax/" title="Просмотреть все записи в рубрике &laquo;AJAX&raquo;" rel="category tag">AJAX</a>, <a href="http://www.ajaxplanet.ru/category/google/" title="Просмотреть все записи в рубрике &laquo;Google&raquo;" rel="category tag">Google</a>, <a href="http://www.ajaxplanet.ru/category/java/" title="Просмотреть все записи в рубрике &laquo;Java&raquo;" rel="category tag">Java</a>, <a href="http://www.ajaxplanet.ru/category/technology/" title="Просмотреть все записи в рубрике &laquo;Технологии&raquo;" rel="category tag">Технологии</a>, <a href="http://www.ajaxplanet.ru/category/libraries-and-frameworks/" title="Просмотреть все записи в рубрике &laquo;Библиотеки и фреймворки&raquo;" rel="category tag">Библиотеки и фреймворки</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ajaxplanet.ru/google-web-toolkit-manual/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
