簡體   English   中英

404錯誤但正確的Codeigniter框架中來自JQuery Ajax的響應

[英]404 Error but correct Response from JQuery Ajax in Codeigniter Framework

這類似於SO的另一個問題:

jQuery Ajax返回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) {...  }
});

當我使用帶有index.php的url時,一切正常。 但是當我使用沒有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 param。任何我不需要對域進行硬編碼的解決方案對我來說都是可以接受的。)

所以要么我在這三個中的一個(即php,apache或linux版本的變化)中有所不同,或者我需要在我的新Apache設置中修改一些東西(我的猜測是根目錄' /'對於虛擬主機,我在我的本地主機上用於此站點...也許它認為響應來自不同的域,但我不知道如果它與index.php一起使用但是失敗了沒有它???)。

如果任何人有我一個解決方案或想法,嘗試將不勝感激!!!!

以下是Firebug針對非工作案例的詳細信息:

POST http://calendar.localhost/myfeed 404 Not Found

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頁面重定向)。

在CI www目錄中的〜.htaccess? 是:

<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/

解決:令人尷尬的是,ModRewrite未啟用。 我只是通過將垃圾文本放在等效的“if / else”語句中來解決這個問題,該語句是以啟用或不啟用modrewrite為條件的,而且肯定不是。 我會早些發現這個,除了該網站展示其他行為,讓我覺得modrewrite實際上已啟用。 啊。

我希望我的白痴可以幫助別人節省一些時間! :)

您可以在這里獲得完美的解決方案! 問題是最近使用codeigniter進行的更新。 我希望這能節省一兩天的人! 快樂的編碼! https://gist.github.com/philipptempel/4226750

這可能不會起作用,但值得一試。 在htaccess文件中,嘗試從重寫規則中刪除問號,使其成為

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

我有一個問題,我寫的應用程序在我的本地機器上工作正常,但在服務器上保持顯示默認控制器,無論如何,並刪除問號修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM