2016-01-28 3 views
-1

У меня есть файл с именем login.php, в этом файле есть поле для заполнения от отправки данных входа на сервер. Теперь, когда пользователь нажимает кнопку Логин, этот код обжигают:Нет данных ответа после вызова функции

var postUrl = GlobalVariables.baseUrl + 'application/controllers/user.php/ajax_check_login'; 
var postData = 
{ 
     'username': $('#username').val(), 
     'password': $('#password').val() 
}; 

$.post(postUrl, postData, function(response) 
{ 
     // Some stuff.. 
}, 'json'); 

postUrl правильно индексируются по:

http://localhost/App_Name/application/controllers/user.php/ajax_check_login

теперь у меня есть список моего собственного контроллера которые позволяют мне управлять веб-приложением. Один из этих контроллеров user.php, как вы можете видеть, я вызываю функцию ajax_check_login. Эта функция проверяет, существуют ли данные, переданные из этого запроса в базе данных, и если они верны. Это содержание:

public function ajax_check_login() 
{ 
    echo "Test?"; 
    try 
    { 
     if(!isset($_POST['username']) || !isset($_POST['password'])) 
     { 
      throw new Exception('Bad credentials!'); 
     } 

     $this->check_login($_POST['username'], $_POST['password']); 

     if($user_data) 
     { 
      $output[] = array(
       "some content..." 
      echo json_encode($output); 
     } 
     else 
     { 
      echo json_encode(AJAX_FAILURE); 
     } 

    } 
    catch(Exception $exc) 
    { 
     echo json_encode(array(
      'Exception ' => array(exceptionToJavaScript($exc)) 
     )); 
    } 
} 

Теперь, в верхней части всего, я вставил эхо, чтобы проверить, если оно напечатано. Но ничего. В консоли Chrome я получаю:

Этот запрос не имеет данных для ответа.

Я не знаю, что не так, кто-то может просветить меня?

+0

Вы можете попытаться удалить ',«json'' параметр из '$ .post' вызов, просто чтобы убедиться, что проблема не вызвана Chrome пытается расшифровать что-то, что не является действительный JSON (который не из-за теста «echo»? »;' и, возможно, какое-то сообщение об ошибке PHP, если оно есть)? Вы должны поместить ', 'json'' обратно, когда вы закончите отладку. –

+0

Если я удалю 'json' и поставлю этот' console.log («response =>», response); 'внутри' .post', я могу увидеть 'response =>' printend в консоли Chrome, но нет ответ возвращается из функции ... – Dillinger

ответ

0

Во-первых, вы хотите проверить, что такое возврат с сервера, скажем, HTTP200 без содержимого? или Ошибка 500. Почему я говорю это, потому что ваш фрагмент говорит, что осталось несколько переменных/функций. Проверьте мои комментарии:

public function ajax_check_login() 
{ 
    echo "Test?"; 
    try 
    { 
     if(!isset($_POST['username']) || !isset($_POST['password'])) 
     { 
      throw new Exception('Bad credentials!'); 
     } 

     $this->check_login($_POST['username'], $_POST['password']); 

     if($user_data) // $user_data is never defined in this function, and it's not a global variable 
     { 
      $output[] = array(
       "some content..." // syntax error; here missing end parenthesis 
      echo json_encode($output); 
     } 
     else 
     { 
      echo json_encode(AJAX_FAILURE); 
     } 

    } 
    catch(Exception $exc) 
    { 
     echo json_encode(array(
      'Exception ' => array(exceptionToJavaScript($exc)) // unknown function exceptionToJavaScript(); it could encounter fatal error 
     )); 
    } 
} 

Во-вторых, я предлагаю вам отправить заголовок, чтобы определить вы отправляете JSON закодированный контент, и выход() после того, как эхо. Смотрите пример:

header('Content-type: application/json'); 
echo json_encode(/** return **/); 
exit(); 
+0

нет, просто удалите некоторую строку кода для метода show в примере. В любом случае проблема не исправлена, ответ не получен. – Dillinger

+0

Есть ли вероятность, что функция никогда не была выполнена? Можете ли вы войти в PHP? Пожалуйста, попробуйте войти в первую строку функции, чтобы уточнить, например. 'Error_log (__ МЕТОД __)'; –

+0

Я проверяю журнал ошибок, без проблем. – Dillinger

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