Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В проекте CodeIgniter 2 не вызывается ajax pos 
:(
    Опции темы
mstdmstd
Дата 16.12.2012, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Всем привет,
В проекте CodeIgniter 2.1.3 нужно вызвать ajax post метод. Делаю:

Код

    var HRef= "<?php echo $base_url ?>admin/user/save_new_user_notes"  
    alert(HRef) // Выводит http://local-wavendon-props.com/index.php/admin/user/save_new_user_notes
    var DataArray= { 
            "user_id" : '<?php echo $id ?>',
            "notes" :NewUserNotes
      };

    $.ajax({
      url: HRef,
      type: "POST",
      data: DataArray,
      success: onSavedNewUserNotes,
      dataType: "json"
    });
  }

  function onSavedNewUserNotes(data) {     // не вызывается
     alert("onSavedNewUserNotes data::"+data )
     ...
  }


В классе контрола:
Код

<?php
class User extends CI_Controller {
...
  public function save_new_user_notes() {
     AppUtils::DebToFile( ' save_new_user_notes::' . print_r(1,true), true ); // вывод отладочных данных в текстовый файл - ничего не выводит
  ...


В файле access.log:
Код

127.0.0.1 - - [16/Dec/2012:13:29:56 +0200] "POST /index.php/admin/user/save_new_user_notes HTTP/1.1" 500 1176 "http://local-wavendon-props.com/index.php/admin/user/edit/8/page/1/filter_username/lan/filter_type/landlord/sorting/username/sort/desc" "Mozilla/5.0 (X11; Linux i686; rv:10.0.5) Gecko/20110328 Firefox/10.0.6"


В файле log-2012-12-16.php:
Код

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?>

DEBUG - 2012-12-16 11:29:56 --> Config Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Hooks Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Utf8 Class Initialized
DEBUG - 2012-12-16 11:29:56 --> UTF-8 Support Enabled
DEBUG - 2012-12-16 11:29:56 --> URI Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Router Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Output Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Security Class Initialized
DEBUG - 2012-12-16 11:29:56 --> Input Class Initialized
DEBUG - 2012-12-16 11:29:56 --> XSS Filtering completed
DEBUG - 2012-12-16 11:29:56 --> XSS Filtering completed
DEBUG - 2012-12-16 11:29:56 --> XSS Filtering completed
DEBUG - 2012-12-16 11:29:56 --> XSS Filtering completed


Непонятно, почему не вызывается метод save_new_user_notes()  класса User?
если вставить урл http://local-wavendon-props.com/index.php/..._new_user_notes в браузер то он нормально отрабатывает(естественно без параметров)

также непоянтно почему в access.log хостинг 127.0.0.1, ведь в настройках хостинга прописано 
Код

<virtualhost  127.0.0.20 >

и почему урл поста имеет вид 
Код

"POST /index.php/admin...
 без указания хоста. В чем может быть проблема?

Код с ajax post-методом взят с другого проекта (Не CodeIgniter) и там нормально работало.

PM MAIL   Вверх
Arantir
Дата 16.12.2012, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



В access.log не хостинг, а клиент. А все, что локальное - все 127.0.0.1.
Логи без указания домена потому, что так настроены. Посмотрите формат логов в настройках сервера, например в apache.

И вы в курсе, что у вас ajax-запрос вообще на jQuery? Он у вас подключен?

Это сообщение отредактировал(а) Arantir - 16.12.2012, 17:19


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
mstdmstd
Дата 17.12.2012, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Уточните, плиз, о каких  настройках форматв логов на сервера apache вы говорите ?

Да ajax подключен. Там выводится список заметок :
Код

  function UserNotesLoad() {
    var HRef= "<?php echo $base_url ?>admin/user/load_user_notes/user_id/<?php echo $id ?>";
    alert(HRef)
    $.get(HRef,   {  },  //   ЭТА ЧАСТЬ НОРМАЛЬНО РАБОТАЕТ
      onUserNotesLoaded,
      function(x,y,z) {   //Some sort of error
        alert(x.responseText);
      }
    );
  } // UserNotesLoad()
  function onUserNotesLoaded(data) {
    alert("onUserNotesLoaded data::"+data )
    document.getElementById('div_UserNotes').innerHTML= data// список выводится в див div_UserNotes
  }
...
  function SaveNewUserNotes() {
    var NewUserNotes = Trim(document.getElementById("textarea_NewUserNotes").value)
    if ( NewUserNotes == "" ) {
      alert( "Fill User Notes !")
      document.getElementById("textarea_NewUserNotes").focus()
      return
    }

    var HRef= "<?php echo $base_url ?>admin/user/save_new_user_notes"

    alert(HRef)
    var DataArray= {
            "user_id" : '<?php echo $id ?>',
            "notes" :NewUserNotes
      };
    alert("DataArray::"+var_dump(DataArray) )

    $.ajax({  // ТЕКСТ ИЗ TEXTAREA НЕ СОХРАНЯЕТСЯ
      url: HRef,  
      type: "POST",
      data: DataArray,
      success: onSavedNewUserNotes,
      dataType: "json"
    });
  }

  function onSavedNewUserNotes(data) {  // НЕ ВЫЗЫВАЕТСЯ
     alert("onSavedNewUserNotes data::"+data )
    if ( parseInt(data.ErrorCode) == 0 ) {
      UserNotesLoad()
        } else {
          alert((data.ErrorMessage))
        }
  }


Верстка с дивом, textarea и кнопкой Save:
Код

  <tr >
    <td colspan="2">
      <div id="div_UserNotes"></div>
    </td>
  </tr>

  <tr >
    <td colspan="2">
      &nbsp;<b>Add New User Notes</b><br>
       <textarea cols="100" rows="10" name="textarea_NewUserNotes" id="textarea_NewUserNotes"></textarea>&nbsp;
    </td>
  </tr>

  <tr >
    <td>
      &nbsp;
    </td>
    <td>
      <a href="javascript:SaveNewUserNotes()">Save</a>&nbsp;
    </td>
  </tr>


PM MAIL   Вверх
Arantir
Дата 19.12.2012, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Цитата(mstdmstd @  17.12.2012,  09:19 Найти цитируемый пост)
Уточните, плиз, о каких  настройках форматв логов на сервера apache вы говорите ?

Там ни в одном стандартном формате домен в адресе запроса не предусмотрен. Так как подразумевается, что и так понятно, на какой домен пришли - на тот домен, чьи логи вы смотрите.
Файл настроек apache (apache2.conf или httpd.conf):
Код

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%r - это запись вида "GET /some_dir/some_script.php HTTP/1.0". Она соответствует формату "%m %U%q %H" - "метод url протокол".
Параметр %A - это IP сервера, это по идее должно указать вам тот IP, по которому поступил запрос.

Код

  function onSavedNewUserNotes(data) {  // НЕ ВЫЗЫВАЕТСЯ
     alert("onSavedNewUserNotes data::"+data )
    if ( parseInt(data.ErrorCode) == 0 ) {
      UserNotesLoad()
        } else {
          alert((data.ErrorMessage))
        }
  }
Точки с запятой после alert не хватает, или это только в сообщении опечатка?


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
mstdmstd
Дата 20.12.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Спасибо за поясние о настройках сервера )
Это ж Javascript - там ведь точка с запятой в конце строки необязательна, да и если ее поставить ничег не измениться .
Спрошу иначе а как вы делаете ajax post запрос ?
PM MAIL   Вверх
Arantir
Дата 20.12.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



А у вас в логах при POST-запросе на /index.php/admin/user/save_new_user_notes стоит статус 500, то есть ошибка сервера. Проверьте код контроллера.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
mstdmstd
Дата 21.12.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Как я писал ранее если урл скопировать в буфер 
Код

    var HRef= "<?php echo $base_url ?>admin/user/save_new_user_notes"  
    alert(HRef) // Выводит http://local-wavendon-props.com/index.php/admin/user/save_new_user_notes

и вставить в браузер то контролер нормально вызывается и строка отладки есть с текстовом файле - что я и сделал чтобы проверить что контролер нормально вызывается
и в логах есть строка :
Код

127.0.0.1 - - [21/Dec/2012:10:03:01 +0200] "GET /index.php/admin/user/save_new_user_notes HTTP/1.1" 200 58 "-" "Mozilla/5.0 (X11; Linux i686; rv:10.0.5) Gecko/20110328 Firefox/10.0.6"


Не пойму почему post не работает - в консоле ошибок нет.

PM MAIL   Вверх
Arantir
Дата 21.12.2012, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



GET на POST не приходится, так сказать. Ошибка могла возникнуть именно в блоке, который обрабатывается только при POST-запросе.
Сделайте форму с отправкой POST-запроса на этот конроллер и уже ее отправляйте из браузера. При этом, по идее, все, что выдает сервер (т.е., например, ошибки), вы увидите в браузере.

Это сообщение отредактировал(а) Arantir - 21.12.2012, 11:36


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Arantir
Дата 25.12.2012, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Цитата(mstdmstd @  20.12.2012,  10:50 Найти цитируемый пост)
Это ж Javascript - там ведь точка с запятой в конце строки необязательна, да и если ее поставить ничег не измениться .

Вот специально для вас: http://shamansir.github.com/JavaScript-Gar...#core.semicolon =)


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.1509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.