Как мне оценить этот конкретный JSON с Prototype (JS)? - PullRequest
0 голосов
/ 08 апреля 2011

Данные с сервера превратились в массив JSON в виде responseText ajax-запроса:

Price : [{"id":"1","max_price":"100000"},{"id":"2","max_price":"150000"},{"id":"3","max_price":"200000.55"}]

Name : [{"id":"1","name":"P1"},{"id":"2","name":"P2"},{"id":"3","name":"P3"}]

Я вижу в прототипе этот метод: var json = transport.responseText.evalJSON(true);

Как мне получить массив Price, чтобы JSON равнялся:

[{"id":"1","max_price":"100000"},{"id":"2","max_price":"150000"},{"id":"3","max_price":"200000.55"}]`

1 Ответ

1 голос
/ 08 апреля 2011

PHP должен включать заголовок json:

header('Content-type: application/json');

В запрос ajax должен быть включен evalScripts (убедитесь, что вы доверяете источнику):

new Ajax.Request("json.php",
          { method: 'get',
            parameters: {'xyz': 'json', 'var2': 'some_val'},
            evalScripts: true,
            onSuccess: function(response){your_function(response);}});

Тогда ваша функция можетполучите json, как показано ниже:

your_function = function (response) {
  var result = response.responseJSON;
  ...
}

Редактировать: есть также эти инструкции непосредственно из источника: http://www.prototypejs.org/learn/json


Edit2: Вот как обновить сервер:

$return_data = array();
$return_data['price'] = getPrice($db); 
$return_data['name'] = getName($db);
echo json_encode($return_data)."\n";

после того, как вы это сделаете, в js вы можете сделать что-то вроде следующего (из приведенного выше примера your_function):

alert ("first id is: " + result['price'][0]['id']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...