404 Ошибка, но правильный ответ от JQuery Ajax в Codeigniter Framework - PullRequest
3 голосов
/ 22 марта 2011

Это похоже на другую проблему в SO:

jQuery Ajax returning 404 Ошибка, но правильный ответ

, но приведенное выше очень специфично для wordpress.Кроме того, мое внутреннее чувство заключается в том, что моя проблема больше связана с настройкой сервера Apacher, но я в этом немного новичок.

Вот в чем дело ... У меня есть этот код Jquery AJAX:

events: function(start, end, callback) {
$.ajax({
    type: "POST",
    // This Works -->
    url: 'http://calendar.localhost/index.php/myfeed/',
    // This Fails -->
    //url: 'http://calendar.localhost/myfeed/',
    dataType: 'json',
    cache: false,
    data: {
        appointment_id: _appointmentId
    },
    success: function(d) {.... },
    error: function(x,s,e) {...  }
});

Когда я использую URL с index.php, все работает отлично.Однако, когда я использую файл без index.php, я получаю ошибку 404, даже если данные (json) возвращаются нормально (см. Ниже).

Кроме того, это происходит в новой системеЯ недавно обновился до: Debian 2.6.32 (amd64) PHP 5.3.3 Apache 2.2.16

Тот же код (т.е. / myfeed или без index.php) работает на моей старой системе: Fedora 8 (да,8 lol) PHP 5.2.x Apache 2.2.6

(Обратите внимание, что изначально я использовал '/ myfeed' для параметра url, который работал, найти в моей "старой" системе. Любое решение, где у меня нетжестко закодировать домены было бы приемлемо для меня.)

Так что либо я столкнулся с некоторой разницей в одном из этих 3 (то есть, в изменении версий php, apache или linux), либо есть что-то, что мне нужноизменить в моей новой настройке Apache (я думаю, что-то с корневым каталогом '/' для виртуальных хостов, который я использую для этого сайта на моем локальном хосте ... возможно, он думает, что ответ от другого домена, но яне понимаю, как это может быть, если он работает с index.php, но faил без него ???).

Если у кого-нибудь есть решение или идеи, которые я бы попробовал, это было бы очень приветствуется !!!!

Вот подробности из Firebug для нерабочего случая:

POST http://calendar.localhost/myfeed 404 Не найдено

Headers tab:
Response Headersview source
Date    Tue, 22 Mar 2011 06:22:37 GMT
Server  Apache/2.2.16 (Debian)
X-Powered-By    PHP/5.3.3-7+squeeze1
Vary    Accept-Encoding
Content-Encoding    gzip
Content-Length  220
Keep-Alive  timeout=15, max=90
Connection  Keep-Alive
Content-Type    text/html
Request Headersview source
Host    calendar.localhost
User-Agent  Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110302 Iceweasel/3.5.16 (like Firefox/3.5.16)
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  300
Connection  keep-alive
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With    XMLHttpRequest
Referer http://calendar.localhost/index.php/client
Content-Length  36

Response tab:
{"eventArray":[{"id":"2","notes":"test client Thurs","start":1299951000000,"end":1299960900000},{"id":"3","notes":"test bb334343","start":1300064400000,"end":1300068000000},{"id":"5","notes":"New appt dafdaf","start":1300462200000,"end":1300465800000},     {"id":"35","notes":"japan2","start":1300539600000,"end":1300545000000},{"id":"47","notes":"helo customer test","start":1300471200000,"end":1300475700000},{"id":"50","notes":"test 2 x email","start":1300455000000,"end":1300455900000}]}

Также:

~ mod_rewrite включен?Да, я верю в это (мои страницы CI перенаправляются так, как должны).

~ .htaccess в каталоге CI www?Да:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin

ErrorDocument 404 /index.php
</IfModule>

Спасибо,

Питер

PHP-код (по запросу):

public function viewEvent()
{
   ...
   $appointmentData['startDate'] = $startDate;
   $appointmentData['startTime'] = $startTime;

   $data = array( 'eventData'=>$appointmentData );

   echo json_encode($data);
}

Кроме того, журнал Apache дает:

[Tue Mar 22 10:45:03 2011] [error] [client 127.0.0.1] File does not exist: /var/www/calendar/myfeed, referer: http://calendar.localhost/

Ответы [ 3 ]

9 голосов
/ 05 апреля 2011

Решено: неловко, ModRewrite не был включен. Я понял это, поместив мусорный текст внутри эквивалента оператора «if / else», обусловленного включением или отключением modrewrite, и, конечно же, это не так. Я бы нашел это раньше, за исключением того, что сайт демонстрировал другое поведение, которое заставило меня думать, что modrewrite действительно был включен. тьфу.

Я надеюсь, что мой идиотизм поможет кому-то сэкономить время в будущем! :)

0 голосов
/ 03 июля 2014

Вы можете получить идеальное решение здесь! Проблема в последних обновлениях с codeigniter. Я надеюсь, что это спасет кого-то день или два! Удачного кодирования! https://gist.github.com/philipptempel/4226750

0 голосов
/ 23 марта 2011

Это, вероятно, не сработает, но оно того стоит. В файле htaccess попробуйте удалить знак вопроса из правила перезаписи, чтобы он стал

RewriteRule ^(.*)$ index.php/$1 [L]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...