2012-03-24 80 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文件?