Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Не могу вывести msgbox через JSON

Не могу вывести msgbox через JSON


     20.10.2014    Общие вопросы, jQuery, Общие вопросы по PHP    1813

вопрос
Есть AJAX обработчик, и результат работы мне надо вывести в формате JSON. если выводить результат в виде текста (строки), то всё хорошо выводится. А если выводить в виде msgbox то происходит ошибка.

Вот так выводится хорошо:

$msg = "<div class='berrors'>{$msg}</div>";

echo "{\"text\": \"{$msg}\"}";


А так не выводится, хотя я использую "фильтр", как в фидбэк:


msgbox( "Готово!", $msg );

$tpl->result['info'] = str_replace( '{THEME}', $config['http_home_url'] . 'templates/' . $_REQUEST['skin'], $tpl->result['info'] );
$tpl->result['info'] = str_replace ('"', '\"', $tpl->result['info']);
$tpl->result['info'] = str_replace( "{", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "}", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\r", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\n", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\t", '', $tpl->result['info'] );

echo "{\"text\": \"{$tpl->result['info']}\"}";



Подскажите где проблема? уже раза 3 возвращался к этому, но без толку... Заранее спасибо :)

Ответил: ПафНутиЙ



$arr['text'] = $tpl->result['info'];
json_encode($arr['text']);

Ну и http заголовок отдавать соответствующий.

Комментарии пользователей (11)

vk_159926832
206 | 5

vk_159926832 - 21 октября 2014 12:33 - Юзер

Как правильно отдать заголовок? Всеравно не получилось с использованием вашей функции. Я кодирую массив отправляемых данных в UTF8 при помощи своей функции, но это не помогает. С cp1251 вобще никакой результат не возвращается.


msgbox( $lang['add_ok'], $msg );

$tpl->result['info'] = str_replace( '{THEME}', $config['http_home_url'] . 'templates/' . $_REQUEST['skin'], $tpl->result['info'] );
$tpl->result['info'] = str_replace ('"', '\"', $tpl->result['info']);
$tpl->result['info'] = str_replace( "{", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "}", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\r", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\n", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "\t", '', $tpl->result['info'] );


$return_json = array();
$return_json['code'] = $code;
$return_json['text'] = $tpl->result['info'];

$return_json = convert_utf_array($return_json);

echo json_encode($return_json);


У меня в AJAX задан параметр, что придет JSON:

url: '/engine/ajax/ajax.php',
type: 'POST',
data: params,
dataType: "json",
success: function(data) {....


помогите! в чем проблема?

lutskboy
3

547 | 103

lutskboy - 21 октября 2014 15:24 - Юзер

напишите полностью етот Java Script
посмотрим

vk_159926832
206 | 5

vk_159926832 - 21 октября 2014 18:30 - Юзер


Sander
1125

1637 | 1204

Sander - 21 октября 2014 15:46 - Эксперт

msgbox( "Готово!", $msg );

$tpl->result['info'] = str_replace( '{THEME}', $config['http_home_url'] . 'templates/' . $_REQUEST['skin'], $tpl->result['info'] );
$tpl->result['info'] = addcslashes($tpl->result['info'], "\v\t\n\r\f\"\\/");
$tpl->result['info'] = str_replace( "{", '', $tpl->result['info'] );
$tpl->result['info'] = str_replace( "}", '', $tpl->result['info'] );

echo "{\"text\": \"{$tpl->result['info']}\"}";

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

vk_159926832
206 | 5

vk_159926832 - 21 октября 2014 18:29 - Юзер

addcslashes Не помог :( все равно выдаёт ошибку.



lutskboy
3

547 | 103

lutskboy - 21 октября 2014 15:49 - Юзер

и что находиться в $tpl->result['info']

D0Gmatist
225

794 | 281

D0Gmatist - 21 октября 2014 16:11 - Местный

Цитата: lutskboy
в $tpl->result['info']
находится скомпилированый шаблон с данными шаблона и заменёнными тегами

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

D0Gmatist
225

794 | 281

D0Gmatist - 21 октября 2014 16:24 - Местный

1) JS
        var aaa = "абвгдейка";

        $.ajax({
            url: "xxx.php",
            dataType: 'json',
            type: 'post',
            data: {
                aaa: aaa,
                bbb: "bbb"
            },
            beforeSend: function() {
                alert( "данные в промежутке старта и окончания запроса .. к примеру ПОДОЖДИТЕ..." );
            },
            error: function() {
                alert( "в php ошибка" );
            },
            success: function( data ) {

                if ( data.status ) {
                    /*данные результата php "Вы передали данные."*/
                    alert( data.text );
                } else {
                    /*данные результата php "Вы не передали данные."*/
                    alert( data.text );
                }

            }
        });

2) xxx.php
    $json = array(
        'status'    => TRUE,
        'text'        => ''
    );

    if ( $_POST['bbb'] == "bbb" ) {

        if ( $_POST['aaa'] ) {
            $json['text'] = "Вы передали данные " . $_POST['aaa'];
        } else {
            $json['status'] = FALSE;
            $json['text'] = "Вы не передали данные.";
        }

    }

    echo json_encode($json);

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

lutskboy
3

547 | 103

lutskboy - 22 октября 2014 13:36 - Юзер

киньте ссылку на сайт где проблема. посмотрим что приходит в ответ раз оно не работает.

vk_159926832
206 | 5

vk_159926832 - 22 октября 2014 15:56 - Юзер

Сайт на локалке, код я отправил, вот Смотрите в этом комментарии. Выполняется сразу это:
error: function(data) {
        $('#info_popup').text('Ошибка отправки.');
    }

vk_159926832
206 | 5

vk_159926832 - 23 октября 2014 16:49 - Юзер

Всем спасибо за помощь, проблему нашел сам! Когда разобрал весь ajax файл по частям, то обнаружил, что MSGBOX выдаёт:

Template not found: TEMPLATE_DIR/info.tpl

Я просто объявил константу TEMPLATE_DIR и всё сразу заработало.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 06.03.2014 vip.boss  Общие вопросы