2012-03-24 43 views
0

我有了這個jQuery的功能:

function phpmail(){ 
    $.post('mail.php',{name:$("#name").val()}, 
     function(out){ 
      alert(out); 
     }); 
} 

和mail.php這個PHP腳本:

<?php 
$name=$_POST['name']; 
echo $name; 
?> 

然而,每次當我點擊一個按鈕,我得到PHP代碼而不是變量,所以有人可以解釋我做錯了什麼? 我正在使用WAMP在本地計算機上測試此功能。

+5

'mail.php'被服務器視爲純文本文件。修復你的配置 – Robus 2012-03-24 11:38:52

+0

如果你只是瀏覽到mail.php,你不會得到PHP代碼嗎? – bzlm 2012-03-24 11:39:00

回答

1

也許你用錯誤的URL(瀏覽器)測試它..

它應該http://localhost/

不是文件啓動:/// C:\ WAMP \ BLA

+0

這應該是一個評論,而不是一個答案。 – ThiefMaster 2012-03-24 12:01:08

+1

它的工作原理,愚蠢的我,我從來沒有想到這一點。謝謝。 – Mentalhead 2012-03-24 18:37:45

+0

不客氣 – Kokizzu 2012-03-25 14:31:19

0

這是一個嚴重的問題。你應該確保php正確地安裝在你的實例上,否則任何人都可以看到你的代碼。另外,請確保您的Web服務器不是以純文本格式處理您的cgi文件。

0

這與您的PHP或JavaScript代碼無關。問題是您的Web服務器配置錯誤。它不識別「.php」作爲PHP代碼,因此不解析它。

您需要告訴您的網絡服務器具有「.php」結尾的文件將由PHP處理。您沒有提及您正在使用哪個Web服務器,因此很難爲您提供精確的說明,但對於它的價值,這裏是我的Apache配置的相關部分。

<IfModule mod_php5.c> 
    <FilesMatch "\.ph(p3?|tml)$"> 
     SetHandler application/x-httpd-php 
    </FilesMatch> 

    # ...bunch of irrelevant stuff here 

</IfModule> 

當然,爲了讓PHP在所有的工作,模塊必須加載像這樣:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

不過,如果你正在運行Linux,這是奇怪的,如果你要自己配置這個。但是,我不知道你在跑什麼。

Web服務器相互之間差別很大,所以很難在沒有更多關於運行時環境的信息的情況下爲您提供良好的指令。你正在運行Apache或IIS或Lighttp等? - 你在Windows或Linux或Mac上運行嗎?如果Linux,哪個發行版,Debian或者Fedora Core或者Ubuntu?

+0

爲什麼現在還有人會使用php3? (即使它只是在擴展名中) – ThiefMaster 2012-03-24 12:01:29

+0

這可能僅僅是由於某些原因,人們將文件命名爲「.php3」的那一天。這就是Debian安裝的任何方式,它的工作原理。 – Teekin 2012-03-24 12:20:48

0

你配置你的Web服務器(如Apache或nginx)是否正確?你是否以純文本的形式處理php文件?