Возврат ответа при jQuery

Тема в разделе "Другие языки", создана пользователем yeaahhh, 3 дек 2010.

Модераторы: Цукер
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья. Такой вопрос..
    Делаю добавление записей в таблицу без перезагрузки страницы с помощью Jquery.
    Данным запросом посылаю информацию в файл voprosi.php, в котором идет добавление записи в БД.
    PHP:
                $.ajax({
                    
    type"POST",
                    
    url"voprosi.php",
                    
    data"antext="+antext+"&action=add",

                    
    success: function(msg){
                        
    show_messages();
    alert"Добавлено!" );
                   },
    error: function(msg){
    alert"Не добавлено!" );
                   }
                });
    Не могу понять следующее: как можно вывести ответ из файла voprosi.php? Т.е. если в файле voprosi.php происходит нарушение какого-либо условия.. Напр: if (ошибка) echo "Ошибка".. Как можно вывести эту ошибку (Слово: "Ошибка") из voprosi.php, чтобы оно отображалось?
    Заранее спасибо!
     
  2. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    PHP:
    success: function(data) {
        $(
    'div.result').html(data);
        
    alert('Опа, все плохо!');
      }
    а в вопросах уже делать echo 'все ок'; или echo 'все не оок';

    так не получится?
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Разобрался.. Статус выводит функция
    PHP:
    success: function(msg){
                        
    show_messages();
    alert"" +msg );
                   }
    А мог бы кто-нибудь написать функцию, с помощью которой ответ выводился не в alert-окне, а в <div id="status"></div> на странице.. Буду очень благодарен..
     
  4. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    PHP:
    $('#status').text(msg);
     
    yeaahhh нравится это.
  5. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Можно так:

    PHP:
    function arr2json($arr){
        foreach(
    $arr as $k => $val)
            
    $json[] = "\"{$k}\"".':'.php2js($val);
        if(
    count($json) > 0)
            return 
    '{'.implode(','$json).'}';
        return 
    '';
    }

    function 
    php2js(&$val){
        if(
    is_array($val))
            return 
    arr2json($val);
        if(
    is_string($val))
            return 
    '"'.addslashes($val).'"';
        if(
    is_bool($val))
            return 
    'Boolean('.(int) $val.')';
        if(
    is_null($val))
            return 
    '""';
        return 
    $val;
    }
    То, что нужно вывести пихаешь в какую-нибудь переменную, а потом делаешь

    PHP:
    arr2json()
    В js скрипте что-то типа такого
    HTML:
    	$.post("js.php", {'id':'val'}, function(data){
    		if (data == null) {
    			// ...
    		}
    		else {
    			alert(data.imya_peremennoy);
    		}
    	}, "json");
    
     
  6. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    potuga
    зачем это все писать если есть встроенные ф-ции json_decode() json_encode() ?
     
  7. Mr.Emm

    Mr.Emm Постоялец

    Регистр.:
    5 май 2008
    Сообщения:
    145
    Симпатии:
    108
    Да, при работе с аяксом JSON это лучший способ общения с сервером и в некоторых случаях даже хранения в базе(например личных настроек), очень удобный формат данных.
    Нужно отметить, что для корректной работы этих функций, все запросы должны быть в utf-8, иначе без проблем не обойтись, также версия php должна быть не ниже 5.2.0, не знаю почему, но все самодельные функции которые я раньше подключал, работали кривовато, после перехода на php>5.2.0 со встроенными проблем нет.
     
  8. Xata6

    Xata6 Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    84
    Симпатии:
    5
    Код:
    var test = $.ajax({type: "POST",url: "/test.php",data: 'peremennayaPOST=value&peremennayaPOST2='+encodeURIComponent(value_from_html),async: false}).responseText;
    if (test=='buuu'){alert('yes');}else {alert('false');}