2012-07-03 41 views
1

我想編程一個在線實驗,它將一些數據使用jQuery和ajax發佈到一個將腳本數據保存到文本文件的PHP腳本中,而且我遇到了一些問題。當我發佈的數據很小(比如2kb)並且能夠正確保存發佈的數據時,腳本工作正常,但是當帖子中的數據變爲4kb或更大時,我得到一個404錯誤,而PHP腳本不會運行在全部(沒有數據保存到文件),這是非常奇怪的。下面是相關的JavaScript和PHP代碼:jQuery Ajax發佈到PHP腳本給404錯誤

experiment.js:

$.ajax({ 
    url: 'snippets/saveData.php', 
    data: {"time": time, "experimentStimuli": experimentStimuli, "experimentPredictions": experimentPredictions, "experimentPredictionsEnd": experimentPredictionsEnd}, 
    type: 'POST' 
    }); 

saveData.php:

$_SESSION['user']['experimentStimuli'] = $_POST['experimentStimuli']; 
$_SESSION['user']['experimentPredictions'] = $_POST['experimentPredictions']; 
$_SESSION['user']['experimentPredictionsEnd'] = $_POST['experimentPredictionsEnd']; 

foreach($_SESSION['user']['experimentStimuli'] as $key => $value) { 
    foreach($value as $key2 => $value2) { 
    fwrite($fh, $value2); 
    } 
    fwrite($fh, "\n"); 
} 

foreach($_SESSION['user']['experimentPredictions'] as $key => $value) { 
    foreach($value as $key2 => $value2) { 
    fwrite($fh, $value2); 
    } 
    fwrite($fh, "\n"); 
} 

foreach($_SESSION['user']['experimentPredictionsEnd'] as $key => $value) { 
    foreach($value as $key2 => $value2) { 
    fwrite($fh, $value2); 
    } 
    fwrite($fh, "\n"); 
} 

我使用絕對URL,而不是一個相對的嘗試,但它使沒有區別(相對URL適用於小數據),我也嘗試把頭('HTTP/1.1 200 OK');在我的PHP腳本的頂部,但這似乎不工作。雖然我的網站的基礎是Wordpress,但我的實驗代碼與它是分開的,不需要任何Wordpress功能,但它顯示的404錯誤頁面是Wordpress 404頁面。我有一種感覺,WordPress可能會干擾某種方式(也因爲它在本地工作正常),但我不知道如何解決它。有任何想法嗎?在WordPress

+0

如果你得到404.its文件未找到。 – Dgo

+0

有你的螢火蟲嗎? – Dgo

+0

這可能是由.htaccess將您的查詢重定向到不知道如何將URL處理爲有意義的WordPress的WordPress引起的。有人知道WordPress以及如何控制.htaccess文件,希望能幫助你,如果是這樣的話。 – h00ligan

回答

0

阿賈克斯處理方式稍有不同, 請在這裏閱讀:http://codex.wordpress.org/AJAX_in_Plugins 本文將在一個簡單的是如何在WordPress使用AJAX,無論對於管理員解釋 - 結束,也爲用戶 - 結束。 即使它被稱爲「ajax 插件」它實際上描述了在wordpress中處理ajax的最簡單方法。

0

請檢查您的php.ini以下:

  • post_max_size
  • memory_limit

如果其中任何一個具有4KB的限制,您的文章請求將失敗。這裏memory_limit優先於post_max_size。通常,memory_limit應該大於post_max_size

這裏,當使用整數時,該值以字節爲單位進行測量。要更改較大尺寸的值,您可以使用K(千),M(兆)和G(千兆)。示例10K,2M

+0

post_max_size和memory_limit的限制都高於4kb(分別爲8MB和64MB),所以不幸的是我不認爲這是問題所在。 –