Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Не могу вывести msgbox через JSON

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


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

вопрос
Есть 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
Юзер

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
Эксперт

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

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

vk_159926832
Юзер

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


Sander
PHP-developer

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 - мой блог.

Telegram: @sandev
Skype: Sander8804

vk_159926832
Юзер

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

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



lutskboy
Эксперт

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

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

D0Gmatist
Юзер

D0Gmatist - 21 октября 2014 16:11 -

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

D0Gmatist
Юзер

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
Эксперт

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

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

vk_159926832
Юзер

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

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

vk_159926832
Юзер

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

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

Template not found: TEMPLATE_DIR/info.tpl

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

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

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

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