Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как получить ответ аякс json (https://javascript.ru/forum/dom-window/48277-kak-poluchit-otvet-ayaks-json.html)

imedia 27.06.2014 14:41

как получить ответ аякс json
 
Здравствуйте есть плагин для рейтинга
$('#rating_'+i+'_safety').rating({
		fx: 'half',
        image: '/images/stars.png',
        loader: '/images/ajax-loader.gif',
		url: '/server_rating/rating',
		
        callback: function(responce){
           
            this.vote_success.fadeOut(2000);
            
            alert('Общий бал: '+this._data.val);
        }
	});


Я создал файл на сервере
public function rating(){

$data['status'] = 'ERR';
$data['msg'] = 'Вы не передали нужные данные!';

echo json_encode($data);
}

Как проверить работает ли связь с этим пхп файлом и вывести в алерт json ответ?

Brutus 27.06.2014 16:01

Запусти вот это
<?
//public function rating(){
$data['status'] = 'ERR';
$data['msg'] = 'Вы не передали нужные данные!';

echo 
"<script> 
  var json_data = ".json_encode($data).";
  alert(json_data.status); 
  alert(json_data.msg); 
</script>";
//}
?>

imedia 27.06.2014 16:22

Что мне это даст у меня похоже в самом аяксе проблема, может даже пхп файл не находит, что такое callback, может там success вставить?

Brutus 27.06.2014 16:30

imedia,
Сорри не дочитал,

Потренируйся с этим кодом
/index.html
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <a onclick="ajax('бла бла');">click</a>
    <script>
      //ie
      if (typeof XMLHttpRequest === "undefined") {
        XMLHttpRequest = function () {
          try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
          catch (e) {}
          try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
          catch (e) {}
          try { return new ActiveXObject("Microsoft.XMLHTTP"); }
          catch (e) {}
          throw new Error("This browser does not support XMLHttpRequest.");
        };
      }
      //ie end
      function ajax(txt) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", '/php.php?m='+encodeURIComponent(txt));
        
        xhr.onreadystatechange = function() {
          if(this.readyState == 4)
            if(this.status == 200) 
            { 
              alert(this.responseText);
            }
        }
        xhr.send('');
          
      }
      
    </script>

  </body>
</html>



/php.php
<?
echo $_GET['m']." - получено :)";
?>

imedia 27.06.2014 18:39

Скажите вот в этом примере что не так, ответ ошибка
function ajax(txt) {
	 alert(txt)
       $.ajax({
			
					type: "POST",
					dataType: 'json',
					url: "/server_rating/rating",
					data: {txt:txt},
					cache: false,
					success: function(post){
					alert(post)
					
					},
					error:  function(xhr, str){
                alert('Возникла ошибка: ' + xhr.responseCode);
            }
					
				
			});
           
      }

class Server_rating extends CI_Controller {

public function __construct()
{
parent:: __construct();
	
} 
public function rating(){
header('Content-Type: application/json; charset=utf-8');
$post=$_POST['txt'];
echo json_encode($post);
} 
}

Brutus 27.06.2014 18:54

imedia,
Честно говоря не знаю :)
Работай с js забудь пока JQuery
Как изучишь можешь прибегать к помощи этой библиотеки, ведь она нужна только если у тебя нет времени и много работы

imedia 28.06.2014 11:33

Это общий ответ, извините, у меня конкретная ошибка в консоли
ReferenceError: response is not defined

$('#rating_'+i+'_safety').rating({
		fx: 'half',
        image: '/images/stars.png',
        loader: '/images/ajax-loader.gif',
		url: '/functions_server/rating',
		
        callback: function(responce){
           console.log(response);
            this.vote_success.fadeOut(2000);
            
            alert('Общий бал: '+this._data.val);
        }
	});

header('Content-Type: application/json; charset=utf-8');
	$data['status'] = 'ERR';
    $data['msg'] = 'Вы не передали нужные данные!';
    echo json_encode($data);

imedia 28.06.2014 11:37

Это просто опечатка responce, спасибо


Часовой пояс GMT +3, время: 21:41.