[Решено]Drupal 7, Drupal.parseJson

Главные вкладки

Аватар пользователя phpandrei phpandrei 30 апреля 2011 в 19:23

Здравствуйте! Подскажите хелло ворлд на ajax.
пишу как всегда писал

drupal_json(array('status' => 0, 'data' => 'ffffffffff'));

а в яваскрипте Drupal.parseJson(response);
и вот именно в этом Drupal.parseJson косяк

как понял в семёрке вместо drupal_json используеися drupal_json_output

Отгуглить немогу что мне нужно. подскажите пожалуйста ка в семёрке это принято писать.

Комментарии

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 30 апреля 2011 в 19:53

"phpandrei" wrote:
можно чуть подробнее?

а что такое по вашему json?
JavaScript Object Notation?

не? Smile

Drupal.parseJson = function (data) {
  if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
    return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
  }
  return eval('(' + data + ');');
};

гы. ни разу сюда не смотрел. я eval дергаю завернув в try catch.

Аватар пользователя phpandrei phpandrei 30 апреля 2011 в 20:19

О, спасибо большое! Вообще семёрка нравится, но так как токо начал её юзать - как задачка, так ступор, в шестёрке хоть куда смотреть знал, решалась всё так или иначе, а тут кое как Sad

Аватар пользователя phpandrei phpandrei 30 апреля 2011 в 20:42

в яваскрипте получить переданное значение можно так response.data, где data - значение передаваемое в drupal_json_output, а response - передаваемое значение из джейкверевского гет запроса

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 30 апреля 2011 в 21:30

"vgoodvin" wrote:
А JSON.parse() юзать не пробовали?

нет
"vgoodvin" wrote:
jQuery.parseJSON()

оно только с 1.4
и кстати вот она она http://code.jquery.com/jquery-1.5.2.js отседова.

          parseJSON: function( data ) {
                if ( typeof data !== "string" || !data ) {
                        return null;
                }

                // Make sure leading/trailing whitespace is removed (IE can't handle it)
                data = jQuery.trim( data );

                // Make sure the incoming data is actual JSON
                // Logic borrowed from http://json.org/json2.js
                if ( rvalidchars.test(data.replace(rvalidescape, "@")
                        .replace(rvalidtokens, "]")
                        .replace(rvalidbraces, "")) ) {

                        // Try to use the native JSON parser first
                        return window.JSON && window.JSON.parse ?
                                window.JSON.parse( data ) :
                                (new Function("return " + data))();

                } else {
                        jQuery.error( "Invalid JSON: " + data );
                }
        },

и fallback в сюда new Function - это тот же eval тока хитрожопее Smile

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 30 апреля 2011 в 23:04

"vgoodvin" wrote:
А в семерке jQuery JavaScript Library v1.4.4

да плевать. надо посмотреть будет как эти обертки себя поведут если им говно вместо json подкладывать.

мало ли - на сервере ошибки, связь рвецо и тд.

Аватар пользователя phpandrei phpandrei 1 мая 2011 в 19:29

Дык я ж и пишу что в Drupal.parseJson ошибка. JSON.parse() и jQuery.parseJSON() тот же результат. просто через точку взял и всё. как понял функция семёрки drupal_json_output по другому передаёт данные в отличае от drupal_json.