2013-08-08 4 views
0

Я делаю вызов ajax для своего контроллера, но предупреждение в моем успехе не отображается, и я не получаю ошибок в консоли. Я не знаю, как действовать сейчас.Нет ошибок, но нет успеха в jquery Ajax

контроллер - скорость

function graph($userid, $courseid){ 

    $i_am_admin = $this->logged_in->logged_as_admin(); 
    if($this->session->userdata('id') == $userid || $i_am_admin){ 
     $this->load->model('rate_model'); 
     $graph_data = array(); 

     if($query = $this->rate_model->graphRate($userid, $courseid)){ 
      $data['rate'] = $query; 
     } 
     $data['graph_json'] = json_encode($query); 

     $data['content'] = 'rate_graph_view'; 
     $this->load->view('templates/template', $data); 
     return json_encode($query); 
    } 
} 

script.js

$('.profileimg').click(function(){ 
    $.ajax({ 
     url: url, // url = http://localhost/herexamen/project/rate/graph/6/4 
     type:'POST', 
     dataType: 'json', 
     success: function(output_string){ 
      alert(output_string); 
      alert("yes"); 
     } // End of success function of ajax form 
    }); // End of ajax call 
}); 
+0

- это функция graph(), называемая функцией actully? –

+0

Я думал, что он вызван по URL-адресу? – mXX

+0

Правильно, codeigniter вызовет функцию 'graph'. –

ответ

0

Вы не проверять, если вызов Ajax не удалось

Прилагаемый код не является решением, любой означает, но может пролить свет на ваши проблемы. Заметьте, я добавил раздел error в запрос ajax.

Каков результат этого звонка?

$('.profileimg').click(function(){ 
    $.ajax({ 
      url: url, 
     type:'POST', 
      dataType: 'json', 
      success: function(output_string){ 
        alert(output_string); 
        alert("yes"); 
      }, 
      error: function(jqXHR, textStatus) { 
       alert("Request failed: " + textStatus); 
      } 
    }); // End of ajax call 
}); 
+0

Я получаю: «Ошибка запроса: ошибка разбора – mXX

+0

Это означает, что данные, которые вы возвращаете, не находятся в формате' json'. Если вы хотите, попробуйте удалить 'dataType: 'json'' и посмотреть, что такое output_string. –

+0

Как это может быть? Последняя строка в моем контроллере - это кодированный json-запрос – mXX

0

При принятии ajax вызовов, которые должны повторить содержание или ответ для отправки и вы используете возвращение попробовать это

echo json_encode($query); 

Почему вид загружается, когда вы делаете JSON и только

function graph($userid, $courseid){ 

     $i_am_admin = $this->logged_in->logged_as_admin(); 

     if($this->session->userdata('id') == $userid || $i_am_admin){ 
      $this->load->model('rate_model'); 
      $graph_data = array(); 

     if($query = $this->rate_model->graphRate($userid, $courseid)){ 
      $data['rate'] = $query; 
     } 
     $data['graph_json'] = json_encode($query); 

     $data['content'] = 'rate_graph_view'; 
     $data['viewloaded']= $this->load->view('templates/template', $data,true); 
     echo json_encode($data); 
     die(); 
    } 
} 

Там является третий опциональный параметр позволяет изменить поведение функцию так, что она возвращает данные в виде строки, а не отправлять его в ваш браузер. Это может быть полезно, если вы хотите каким-то образом обработать данные . Если вы установите для параметра значение true (boolean), он вернет данные . По умолчанию используется значение false, которое отправляет его в ваш браузер. Не забудьте присвоить его переменной, если вы хотите, возвращаемые данные

CI Views

+1

Я думал, что вы не можете сделать эхо в контроллере по принципу MVC? – mXX

+0

На самом деле это не так. Он использует 'codeigniter' и вызывает представление. В любом случае, предупреждение будет показано. –

+0

Я вызываю представление, потому что это то, что я хочу показать, и с помощью json-данных я буду манипулировать этим. – mXX

Смежные вопросы